SQLite C 接口

查询结果中的数据来源

const char *sqlite3_column_database_name(sqlite3_stmt*,int);
const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
const char *sqlite3_column_table_name(sqlite3_stmt*,int);
const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);

这些例程提供了一种方法来确定作为SELECT语句 中特定结果列来源的数据库、表和表列 。数据库或表或列的名称可以作为 UTF-8 或 UTF-16 字符串返回。_database_ 例程返回数据库名称,_table_ 例程返回表名,origin_ 例程返回列名。返回的字符串有效,直到使用sqlite3_finalize()销毁准备好的语句,或者直到通过第一次调用sqlite3_step()为特定运行自动重新准备语句,或者直到以不同的编码再次请求相同的信息。

返回的名称是数据库、表和列的原始无别名名称。

这些接口的第一个参数是准备好的语句这些函数返回有关语句返回的第 N 个结果列的信息,其中 N 是第二个函数参数。最左边的列是这些例程的第 0 列。

如果语句返回的第 N 列是一个表达式或子查询并且不是列值,那么所有这些函数都返回 NULL。如果发生内存分配错误,这些例程也可能返回 NULL。否则,它们返回从中提取查询结果列的附加数据库、表或列的名称。

与所有其他 SQLite API 一样,那些名称以“16”结尾的 API 返回 UTF-16 编码的字符串,而其他函数返回 UTF-8。

这些 API 仅在使用 SQLITE_ENABLE_COLUMN_METADATA C 预处理器符号编译库时可用。

如果两个或多个线程 同时为同一个准备好的语句和结果列调用一个或多个列元数据接口,则结果是未定义的。

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