SQLite C 接口
动态类型值对象
typedef struct sqlite3_value sqlite3_value;
SQLite 使用 sqlite3_value 对象来表示可以存储在数据库表中的所有值。SQLite 对其存储的值使用动态类型。存储在 sqlite3_value 对象中的值可以是整数、浮点值、字符串、BLOB 或 NULL。
sqlite3_value 对象可以是“受保护的”或“不受保护的”。某些接口需要受保护的 sqlite3_value。其他接口将接受受保护或未受保护的 sqlite3_value。每个接受 sqlite3_value 参数的接口都指定它是否需要受保护的 sqlite3_value。sqlite3_value_dup()接口可用于从未受保护的 sqlite3_value 构造新的受保护 sqlite3_value 。
术语“受保护”和“不受保护”是指是否持有互斥体。为受保护的 sqlite3_value 对象保留内部互斥锁,但没有为未受保护的 sqlite3_value 对象保留互斥锁。如果 SQLite 被编译为单线程(SQLITE_THREADSAFE=0并且sqlite3_threadsafe()返回 0)或者如果 SQLite 以简化互斥模式 SQLITE_CONFIG_SINGLETHREAD或SQLITE_CONFIG_MULTITHREAD之一运行, 则受保护和未受保护的 sqlite3_value 对象之间没有区别,它们可以可以互换使用。但是,为了最大限度地提高代码可移植性,建议应用程序仍然区分受保护和未受保护的 sqlite3_value 对象,即使不是严格要求也是如此。
作为参数传递到应用程序定义的 SQL 函数的实现中的 sqlite3_value 对象受到保护。sqlite3_vtab_rhs_value()返回的 sqlite3_value 对象 受到保护。sqlite3_column_value()返回的 sqlite3_value 对象 不受保护。未受保护的 sqlite3_value 对象只能用作sqlite3_result_value()、sqlite3_bind_value()和 sqlite3_value_dup()的参数。sqlite3_value_type()系列接口需要受保护的 sqlite3_value 对象 。
18种方法:
- sqlite3_value_blob
- sqlite3_value_bytes
- sqlite3_value_bytes16
- sqlite3_value_double
- sqlite3_value_dup
- sqlite3_value_free
- sqlite3_value_frombind
- sqlite3_value_int
- sqlite3_value_int64
- sqlite3_value_nochange
- sqlite3_value_numeric_type
- sqlite3_value_pointer
- sqlite3_value_subtype
- sqlite3_value_text
- sqlite3_value_text16
- sqlite3_value_text16be
- sqlite3_value_text16le
- sqlite3_value_type