const char * sqlite3_column_decltype(sqlite3_stmt *,int); const void * sqlite3_column_decltype16(sqlite3_stmt *,int);
第一个参数是准备好的语句。如果该语句是一个SELECT语句和返回的结果集的第N列选择被表列(不是表达式或子查询),则表列的声明的类型被返回。如果结果集的第N列是表达式或子查询,则返回NULL指针。返回的字符串始终是UTF-8编码的。
例如,给定数据库模式:
创建表t1(c1变量);
以及以下要编译的语句:
SELECT c1 + 1,c1 FROM t1;
此例程将为第二个结果列(i == 1)返回字符串“ VARIANT”,并为第一个结果列(i == 0)返回NULL指针。
SQLite使用动态运行时类型。因此,仅因为声明某列包含特定类型并不意味着该列中存储的数据具有声明的类型。SQLite是强类型的,但是类型是动态的而不是静态的。类型与单个值相关联,而不与用于保存这些值的容器相关联。