描述
返回数据库名称,它是SELECT语句中特定结果列的原点。
C / C ++语法
const char *sqlite3_column_database_name(sqlite3_stmt*,int); |
PB语法
FUNCTION sqlite3_column_database_name ( _ BYVAL hStmt AS DWORD, _ BYVAL colNumber AS LONG _ ) AS DWORD |
参数
pStmt
[in]准备好的语句句柄。
colNumber
[in]结果集的列号。结果集的最左列有索引0。结果中的列数可以使用sqlite3_column_count确定。
返回值
指向数据库的原始un-aliased名称的指针。如果语句返回的列是表达式或子查询,而不是列值,则此函数返回NULL。返回的字符串是有效的,直到使用sqlite3_finalize销毁准备好的语句,或者直到该语句由特定运行的第一次调用sqlite3_step自动重新准备,或者直到以不同的编码再次请求相同的信息为止。
备注
仅当库使用SQLITE_ENABLE_COLUMN_METADATA C预处理器符号编译时,此函数才可用。
如果两个或更多个线程在同一时间针对相同的准备语句和列调用此函数,则结果未定义。
如果两个或多个线程在同一时间为同一个准备语句和结果列调用一个或多个列元数据接口,则结果未定义。
C ++实现代码
#ifdef SQLITE_ENABLE_COLUMN_METADATA
/*
** Return the name of the database from which a result column derives.
** NULL is returned if the result column is an expression or constant or
** anything else which is not an unabiguous reference to a database column.
*/
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DATABASE);
}
#ifndef SQLITE_OMIT_UTF16
SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DATABASE);
}
#endif /* SQLITE_OMIT_UTF16 */
/*
** Return the name of the table from which a result column derives.
** NULL is returned if the result column is an expression or constant or
** anything else which is not an unabiguous reference to a database column.
*/
SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_TABLE);
}
#ifndef SQLITE_OMIT_UTF16
SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_TABLE);
}
#endif /* SQLITE_OMIT_UTF16 */
/*
** Return the name of the table column from which a result column derives.
** NULL is returned if the result column is an expression or constant or
** anything else which is not an unabiguous reference to a database column.
*/
SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_COLUMN);
}
#ifndef SQLITE_OMIT_UTF16
SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_COLUMN);
}
#endif /* SQLITE_OMIT_UTF16 */
#endif /* SQLITE_ENABLE_COLUMN_METADATA */