Source Of Data In A Query Result
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”结尾的返回UTF-16编码的字符串,其他函数返回UTF-8。
这些API仅在使用SQLITE_ENABLE_COLUMN_METADATA C预处理器符号进行编译时才可用。
如果两个或多个线程同时针对相同的预处理语句和列调用一个或多个这些例程,则结果不确定。
如果两个或多个线程同时为同一个准备好的语句和结果列调用一个或多个列元数据接口,则结果是不确定的。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com