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 预处理器符号编译库时可用。
如果两个或多个线程 同时为同一个准备好的语句和结果列调用一个或多个列元数据接口,则结果是未定义的。