Bun

class

sqlite.StatementSync

class StatementSync

This class represents a single prepared statement. This class cannot be instantiated via its constructor. Instead, instances are created via thedatabase.prepare() method. All APIs exposed by this class execute synchronously.

A prepared statement is an efficient binary representation of the SQL used to create it. Prepared statements are parameterizable, and can be invoked multiple times with different bound values. Parameters also offer protection against SQL injection attacks. For these reasons, prepared statements are preferred over hand-crafted SQL strings when handling user input.

  • readonly expandedSQL: string

    The source SQL text of the prepared statement with parameter placeholders replaced by the values that were used during the most recent execution of this prepared statement. This property is a wrapper around sqlite3_expanded_sql().

  • readonly sourceSQL: string

    The source SQL text of the prepared statement. This property is a wrapper around sqlite3_sql().

  • ...anonymousParameters: SQLInputValue[]
    ): Record<string, SQLOutputValue>[];

    This method executes a prepared statement and returns all results as an array of objects. If the prepared statement does not return any results, this method returns an empty array. The prepared statement parameters are bound using the values in namedParameters and anonymousParameters.

    @param anonymousParameters

    Zero or more values to bind to anonymous parameters.

    @returns

    An array of objects. Each object corresponds to a row returned by executing the prepared statement. The keys and values of each object correspond to the column names and values of the row.

    namedParameters: Record<string, SQLInputValue>,
    ...anonymousParameters: SQLInputValue[]
    ): Record<string, SQLOutputValue>[];

    This method executes a prepared statement and returns all results as an array of objects. If the prepared statement does not return any results, this method returns an empty array. The prepared statement parameters are bound using the values in namedParameters and anonymousParameters.

    @param namedParameters

    An optional object used to bind named parameters. The keys of this object are used to configure the mapping.

    @param anonymousParameters

    Zero or more values to bind to anonymous parameters.

    @returns

    An array of objects. Each object corresponds to a row returned by executing the prepared statement. The keys and values of each object correspond to the column names and values of the row.

  • ...anonymousParameters: SQLInputValue[]
    ): undefined | Record<string, SQLOutputValue>;

    This method executes a prepared statement and returns the first result as an object. If the prepared statement does not return any results, this method returns undefined. The prepared statement parameters are bound using the values in namedParameters and anonymousParameters.

    @param anonymousParameters

    Zero or more values to bind to anonymous parameters.

    @returns

    An object corresponding to the first row returned by executing the prepared statement. The keys and values of the object correspond to the column names and values of the row. If no rows were returned from the database then this method returns undefined.

    namedParameters: Record<string, SQLInputValue>,
    ...anonymousParameters: SQLInputValue[]
    ): undefined | Record<string, SQLOutputValue>;

    This method executes a prepared statement and returns the first result as an object. If the prepared statement does not return any results, this method returns undefined. The prepared statement parameters are bound using the values in namedParameters and anonymousParameters.

    @param namedParameters

    An optional object used to bind named parameters. The keys of this object are used to configure the mapping.

    @param anonymousParameters

    Zero or more values to bind to anonymous parameters.

    @returns

    An object corresponding to the first row returned by executing the prepared statement. The keys and values of the object correspond to the column names and values of the row. If no rows were returned from the database then this method returns undefined.

  • ...anonymousParameters: SQLInputValue[]
    ): Iterator<Record<string, SQLOutputValue>>;

    This method executes a prepared statement and returns an iterator of objects. If the prepared statement does not return any results, this method returns an empty iterator. The prepared statement parameters are bound using the values in namedParameters and anonymousParameters.

    @param anonymousParameters

    Zero or more values to bind to anonymous parameters.

    @returns

    An iterable iterator of objects. Each object corresponds to a row returned by executing the prepared statement. The keys and values of each object correspond to the column names and values of the row.

    namedParameters: Record<string, SQLInputValue>,
    ...anonymousParameters: SQLInputValue[]
    ): Iterator<Record<string, SQLOutputValue>>;

    This method executes a prepared statement and returns an iterator of objects. If the prepared statement does not return any results, this method returns an empty iterator. The prepared statement parameters are bound using the values in namedParameters and anonymousParameters.

    @param namedParameters

    An optional object used to bind named parameters. The keys of this object are used to configure the mapping.

    @param anonymousParameters

    Zero or more values to bind to anonymous parameters.

    @returns

    An iterable iterator of objects. Each object corresponds to a row returned by executing the prepared statement. The keys and values of each object correspond to the column names and values of the row.

  • ...anonymousParameters: SQLInputValue[]

    This method executes a prepared statement and returns an object summarizing the resulting changes. The prepared statement parameters are bound using the values in namedParameters and anonymousParameters.

    @param anonymousParameters

    Zero or more values to bind to anonymous parameters.

    namedParameters: Record<string, SQLInputValue>,
    ...anonymousParameters: SQLInputValue[]

    This method executes a prepared statement and returns an object summarizing the resulting changes. The prepared statement parameters are bound using the values in namedParameters and anonymousParameters.

    @param namedParameters

    An optional object used to bind named parameters. The keys of this object are used to configure the mapping.

    @param anonymousParameters

    Zero or more values to bind to anonymous parameters.

  • enabled: boolean
    ): void;

    The names of SQLite parameters begin with a prefix character. By default,node:sqlite requires that this prefix character is present when binding parameters. However, with the exception of dollar sign character, these prefix characters also require extra quoting when used in object keys.

    To improve ergonomics, this method can be used to also allow bare named parameters, which do not require the prefix character in JavaScript code. There are several caveats to be aware of when enabling bare named parameters:

    • The prefix character is still required in SQL.
    • The prefix character is still allowed in JavaScript. In fact, prefixed names will have slightly better binding performance.
    • Using ambiguous named parameters, such as $k and @k, in the same prepared statement will result in an exception as it cannot be determined how to bind a bare name.
    @param enabled

    Enables or disables support for binding named parameters without the prefix character.

  • enabled: boolean
    ): void;

    By default, if an unknown name is encountered while binding parameters, an exception is thrown. This method allows unknown named parameters to be ignored.

    @param enabled

    Enables or disables support for unknown named parameters.

  • enabled: boolean
    ): void;

    When reading from the database, SQLite INTEGERs are mapped to JavaScript numbers by default. However, SQLite INTEGERs can store values larger than JavaScript numbers are capable of representing. In such cases, this method can be used to read INTEGER data using JavaScript BigInts. This method has no impact on database write operations where numbers and BigInts are both supported at all times.

    @param enabled

    Enables or disables the use of BigInts when reading INTEGER fields from the database.