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。所述 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对象和不受保护的sqlite3_value对象。
作为参数传递到应用程序定义的SQL函数的实现中的sqlite3_value对象受到保护。由sqlite3_column_value()返回的sqlite3_value对象 不受保护。未受保护的sqlite3_value对象只能用作sqlite3_result_value(),sqlite3_bind_value()和 sqlite3_value_dup()的参数。该sqlite3_value_type()系列的接口需要保护sqlite3_value对象。
18种方法: