Small. Fast. Reliable.
Choose any three.

SQLite C接口

检索语句SQL

const char * sqlite3_sql(sqlite3_stmt * pStmt);
char * sqlite3_expanded_sql(sqlite3_stmt * pStmt);
const char * sqlite3_normalized_sql(sqlite3_stmt * pStmt);

如果P由sqlite3_prepare_v2()sqlite3_prepare_v3()sqlite3_prepare16_v2()sqlite3_prepare16_v3()创建,则 sqlite3_sql(P)接口返回指向用于创建预准备语句P的UTF-8 SQL文本副本的指针。sqlite3_expanded_sql(P)接口返回一个指向UTF-8字符串的指针,该字符串包含带有已扩展绑定参数的预准备语句P的SQL文本 。sqlite3_normalized_sql(P)接口返回一个指向包含已准备好的语句P的规范化SQL文本的UTF-8字符串的指针。用于规范化SQL语句的语义是未指定的,并且可能会发生更改。至少,文字值将替换为合适的占位符。

例如,如果使用SQL文本“ SELECT $ abc,:xyz”创建了一条准备好的语句,并且如果参数$ abc绑定到整数2345且参数:xyz未绑定,则sqlite3_sql()将返回原始字符串“ SELECT $ abc,:xyz”,但sqlite3_expanded_sql()将返回“ SELECT 2345,NULL”。

如果没有足够的内存来保存结果,或者结果将超过SQLITE_LIMIT_LENGTH确定的最大字符串长度,则sqlite3_expanded_sql()接口将返回NULL 。

所述SQLITE_TRACE_SIZE_LIMIT编译时选项限制结合的参数扩展的大小。该SQLITE_OMIT_TRACE时间编译选项的原因sqlite3_expanded_sql()总是返回NULL。

sqlite3_sql(P)和sqlite3_normalized_sql(P)返回的字符串由SQLite管理,并在准备好的语句完成后自动释放。另一方面,sqlite3_expanded_sql(P)返回的字符串是从sqlite3_malloc()获取的,必须由应用程序通过将其传递给sqlite3_free()来释放。

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