| ThinSQLite++
    A thin, safe and convenient modern C++ wrapper for SQLite API. | 
Prepared Statement Object. More...
 
  
| Public Types | |
| enum class | explain_type : int { not_explain = 0 , explain = 1 , explain_query_plan = 2 } | 
| Return type for isexplain()  More... | |
| Public Member Functions | |
| ~statement () noexcept | |
| Equivalent to sqlite3_finalize. | |
| class database & | database () const noexcept | 
| Returns the database to which this statement belongs. | |
| bool | step () | 
| Evaluate the statement. | |
| void | reset () noexcept | 
| Reset the statement. | |
| bool | busy () const noexcept | 
| Determine if the statement has been reset. | |
| explain_type | isexplain () const noexcept | 
| Query the EXPLAIN Setting for the statement. | |
| bool | readonly () const noexcept | 
| Determine if the statement writes to the database. | |
| int | column_count () const noexcept | 
| Number of columns in a result set. | |
| int | data_count () const noexcept | 
| Number of columns in a result set. | |
| const char * | sql () const noexcept | 
| Returns a pointer to a copy of the SQL text used to create the statement. | |
| allocated_string | expanded_sql () const | 
| Returns SQL text of the statement with bound parameters expanded. | |
| void | operator delete (void *) noexcept | 
| Operator delete for a fake pointer is no-op. | |
| sqlite3_stmt * | c_ptr () const noexcept | 
| Access the real underlying SQLite type. | |
| Binding values to parameters | |
| This set of overloaded functions wraps sqlite3_bind_ function group. | |
| void | bind (int idx, std::nullptr_t) | 
| Bind a NULL value to a parameter of the statement. | |
| void | bind (int idx, int val) | 
| Bind an int value to a parameter of the statement. | |
| void | bind (int idx, int64_t val) | 
| Bind an int64_t value to a parameter of the statement. | |
| void | bind (int idx, double val) | 
| Bind a double value to a parameter of the statement. | |
| void | bind (int idx, const std::string_view &val) | 
| Bind a string value to a parameter of the statement. | |
| void | bind_reference (int idx, const std::string_view &val) | 
| Bind a string reference to a parameter of the statement. | |
| void | bind_reference (int idx, const std::string_view &val, void(*unref)(const char *)) | 
| Bind a string reference to a parameter of the statement. | |
| void | bind (int idx, const std::u8string_view &val) | 
| Bind a string value to a parameter of the statement. | |
| void | bind_reference (int idx, const std::u8string_view &val) | 
| Bind a string reference to a parameter of the statement. | |
| void | bind_reference (int idx, const std::u8string_view &val, void(*unref)(const char8_t *)) | 
| Bind a string reference to a parameter of the statement. | |
| void | bind (int idx, const blob_view &val) | 
| Bind a blob value to a parameter of the statement. | |
| void | bind_reference (int idx, const blob_view &val) | 
| Bind a blob reference to a parameter of the statement. | |
| void | bind_reference (int idx, const blob_view &val, void(*unref)(const std::byte *)) | 
| Bind a blob reference to a parameter of the statement. | |
| void | bind (int idx, const zero_blob &val) | 
| Bind a blob of zeroes to a parameter of the statement. | |
| template<class T > | |
| void | bind (int idx, T *ptr, const char *type, void(*destroy)(T *)) | 
|  | |
| template<class T > | |
| void | bind (int idx, std::unique_ptr< T > ptr) | 
| Bind a custom pointer to a parameter of the statement. | |
| void | bind (int idx, const value &val) | 
| Bind a dynamically typed value to a parameter of the statement. | |
| Managing parameter bindings | |
| void | clear_bindings () noexcept | 
| Reset all bindings on the statement. | |
| int | bind_parameter_count () const noexcept | 
| Returns the number of SQL parameters. | |
| int | bind_parameter_index (const string_param &name) const noexcept | 
| Returns the index of a parameter with a given name. | |
| const char * | bind_parameter_name (int idx) const noexcept | 
| Returns the name of a parameter with a given index. | |
| Obtaining query results information by column | |
| template<class T > | |
| T | column_value (int idx) const noexcept | 
| Get result value from a query. | |
| const value & | raw_column_value (int idx) const noexcept | 
| Get result values from a query as a raw value object. | |
| int | column_type (int idx) const noexcept | 
| Default datatype of the result column. | |
| const char * | column_name (int idx) const noexcept | 
| Name of the result column. | |
| const char * | column_database_name (int idx) const noexcept | 
| Database that is the origin of a result column. | |
| const char * | column_table_name (int idx) const noexcept | 
| Table that is the origin of a result column. | |
| const char * | column_origin_name (int idx) const noexcept | 
| Table column that is the origin of a result column. | |
| const char * | column_declared_type (int idx) const noexcept | 
| Declared datatype of a result column. | |
| Static Public Member Functions | |
| static std::unique_ptr< statement > | create (const database &db, const string_param &sql, unsigned int flags=0) | 
| Compile an SQL statement. | |
| static std::unique_ptr< statement > | create (const database &db, std::string_view &sql, unsigned int flags=0) | 
| Compile an SQL statement. | |
| static std::unique_ptr< statement > | create (const database &db, const u8string_param &sql, unsigned int flags=0) | 
| Compile an SQL statement. | |
| static std::unique_ptr< statement > | create (const database &db, std::u8string_view &sql, unsigned int flags=0) | 
| Compile an SQL statement. | |
| static statement * | from (sqlite3_stmt *obj) noexcept | 
| Create fake pointer from the underlying SQLite one. | |
Prepared Statement Object.
This is a fake wrapper class for sqlite3_stmt.
#include <thinsqlitepp/statement.hpp> 
| 
 | strong | 
Return type for isexplain()
| Enumerator | ||
|---|---|---|
| not_explain | 0 | The statement is an ordinary statement. | 
| explain | 1 | The statement is an EXPLAIN statement. | 
| explain_query_plan | 2 | The statement is an EXPLAIN QUERY PLAN. | 
| 
 | static | 
Compile an SQL statement.
This is a wrapper over sqlite3_prepare_v3 or sqlite3_prepare_v2, if the former is not available.
| db | The database to create statement for | 
| sql | The statement to be compiled. Must be in UTF-8. | 
| flags | Zero or more SQLITE_PREPARE_ flags. Only available for SQLite 3.2 or greater | 
| 
 | static | 
Compile an SQL statement.
This is a wrapper over sqlite3_prepare_v3 or sqlite3_prepare_v2, if the former is not available.
| db | The database to create statement for | 
| sql | The statement to be compiled. Must be in UTF-8. This is an input-output parameter. On output the string_view is adjusted to contain any text past the end of the first SQL statement. See pzTailargument description for sqlite3_prepare_v3 | 
| flags | Zero or more SQLITE_PREPARE_ flags. Only available for SQLite 3.2 or greater | 
| 
 | inlinestatic | 
Compile an SQL statement.
char8_t overload for create(const database &, const string_param &, unsigned int)
| 
 | inlinestatic | 
Compile an SQL statement.
char8_t overload for create(const database &, std::string_view &, unsigned int)
Returns the database to which this statement belongs.
Equivalent to sqlite3_db_handle
| bool step | ( | ) | 
Evaluate the statement.
Equivalent to sqlite3_step.
Returns true if a row was retrieved (SQLITE_ROW) or false if the statement has finished executing successfully (SQLITE_DONE).
All other sqlite3_step return codes result in exception being thrown
| 
 | inlinenoexcept | 
Reset the statement.
Equivalent to sqlite3_reset
| 
 | inlinenoexcept | 
Determine if the statement has been reset.
Equivalent to sqlite3_stmt_busy
| 
 | inlinenoexcept | 
| 
 | inlinenoexcept | 
Determine if the statement writes to the database.
Equivalent to sqlite3_stmt_readonly
| 
 | inline | 
Bind a NULL value to a parameter of the statement.
Equivalent to sqlite3_bind_null
| 
 | inline | 
Bind an int value to a parameter of the statement.
Equivalent to sqlite3_bind_int
| 
 | inline | 
Bind an int64_t value to a parameter of the statement.
Equivalent to sqlite3_bind_int64
| 
 | inline | 
Bind a double value to a parameter of the statement.
Equivalent to sqlite3_bind_double
| void bind | ( | int | idx, | 
| const std::string_view & | val ) | 
Bind a string value to a parameter of the statement.
Equivalent to sqlite3_bind_text with SQLITE_TRANSIENT.
The string content is used by value and copied into the statement. Thus the lifetime of the string referred to by value parameter is independent of the statement's 
| void bind_reference | ( | int | idx, | 
| const std::string_view & | val ) | 
Bind a string reference to a parameter of the statement.
Equivalent to sqlite3_bind_text with SQLITE_STATIC.
The string content is used by reference. Thus the string referred to by value parameter must remain valid during this statement's lifetime. 
| void bind_reference | ( | int | idx, | 
| const std::string_view & | val, | ||
| void(* | unref )(const char *) ) | 
Bind a string reference to a parameter of the statement.
Equivalent to ::sqlite3_bind_text(..., unref)
The string content is used by reference.
| idx | index of the SQL parameter to be bound | 
| val | reference to string to bind to the parameter | 
| unref | called when the reference is no longer needed. Its argument is the pointer returned from value.data() | 
| void bind | ( | int | idx, | 
| const std::u8string_view & | val ) | 
Bind a string value to a parameter of the statement.
char8_t overload for bind(int, const std::string_view &)
| void bind_reference | ( | int | idx, | 
| const std::u8string_view & | val ) | 
Bind a string reference to a parameter of the statement.
char8_t overload for bind_reference(int, const std::string_view &)
| void bind_reference | ( | int | idx, | 
| const std::u8string_view & | val, | ||
| void(* | unref )(const char8_t *) ) | 
Bind a string reference to a parameter of the statement.
char8_t overload for bind_reference(int, const std::string_view &, void (*)(const char *))
| void bind | ( | int | idx, | 
| const blob_view & | val ) | 
Bind a blob value to a parameter of the statement.
Equivalent to sqlite3_bind_blob with SQLITE_TRANSIENT.
The blob content is used by value and copied into the statement. Thus the lifetime of the blob referred to by value parameter is independent of the statement's 
| void bind_reference | ( | int | idx, | 
| const blob_view & | val ) | 
Bind a blob reference to a parameter of the statement.
Equivalent to sqlite3_bind_blob with SQLITE_STATIC.
The blob content is used by reference. Thus the string referred to by value parameter must remain valid during this statement's lifetime. 
Bind a blob reference to a parameter of the statement.
Equivalent to sqlite3_bind_blob (..., unref)
The blob content is used by reference.
| idx | index of the SQL parameter to be bound | 
| val | reference to blob to bind to the parameter | 
| unref | called when the reference is no longer needed. Its argument is the pointer returned from value.data() | 
| 
 | inline | 
Bind a blob of zeroes to a parameter of the statement.
Equivalent to sqlite3_bind_zeroblob.
| 
 | inline | 
Bind a custom pointer to a parameter of the statement
Equivalent to sqlite3_bind_pointer.
The type parameter should be a static string, preferably a string literal. 
| 
 | inline | 
Bind a custom pointer to a parameter of the statement.
Equivalent to sqlite3_bind_pointer.
This is a safer overload of bind(int, T * , const char * , void( * )(T * )) that takes a pointer via std::unique_ptr ownership transfer. The inferred "type" for sqlite3_bind_pointer is typeid(T).name(). 
| void bind | ( | int | idx, | 
| const value & | val ) | 
Bind a dynamically typed value to a parameter of the statement.
Equivalent to sqlite3_bind_value.
| 
 | inlinenoexcept | 
Reset all bindings on the statement.
Equivalent to sqlite3_clear_bindings.
| 
 | inlinenoexcept | 
Returns the number of SQL parameters.
Equivalent to sqlite3_bind_parameter_count
| 
 | inlinenoexcept | 
Returns the index of a parameter with a given name.
Equivalent to sqlite3_bind_parameter_index
| 
 | inlinenoexcept | 
Returns the name of a parameter with a given index.
Equivalent to sqlite3_bind_parameter_name
| 
 | inlinenoexcept | 
Number of columns in a result set.
Equivalent to sqlite3_column_count
Note that sqlite3_column_count represented by this function and sqlite3_data_count represented by data_count() are subtly and confusingly different. See their respective documentation for details.
| 
 | inlinenoexcept | 
Number of columns in a result set.
Equivalent to sqlite3_data_count
Note that sqlite3_data_count represented by this function and sqlite3_column_count represented by column_count() are subtly and confusingly different. See their respective documentation for details.
| 
 | noexcept | 
Get result value from a query.
Wraps sqlite3_column_ function family. Unlike the C API you specify the desired type via T template parameter
| T | Desired output type. Must be one of: 
 | 
| idx | Column index | 
| 
 | inlinenoexcept | 
Get result values from a query as a raw value object.
Equivalent to sqlite3_column_value
| 
 | inlinenoexcept | 
Default datatype of the result column.
Equivalent to sqlite3_column_type
| 
 | inlinenoexcept | 
Name of the result column.
Equivalent to sqlite3_column_name
The returned string pointer is valid until either the statement is destroyed or until the statement is automatically re-prepared by the first call to step() for a particular run or until the next call to column_name() on the same column.
| 
 | inlinenoexcept | 
Database that is the origin of a result column.
Equivalent to sqlite3_column_database_name
| 
 | inlinenoexcept | 
Table that is the origin of a result column.
Equivalent to sqlite3_column_table_name
| 
 | inlinenoexcept | 
Table column that is the origin of a result column.
Equivalent to sqlite3_column_origin_name
| 
 | inlinenoexcept | 
Declared datatype of a result column.
Equivalent to sqlite3_column_decltype
| 
 | inlinenoexcept | 
Returns a pointer to a copy of the SQL text used to create the statement.
Equivalent to sqlite3_sql
| allocated_string expanded_sql | ( | ) | const | 
Returns SQL text of the statement with bound parameters expanded.
Equivalent to sqlite3_expanded_sql