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 对象。
19 个使用此对象的方法