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_SINGLETHREADSQLITE_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种方法:

另请参阅 对象常量函数的列表。