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