0
我想打印出發送到數據庫的確切SQL語句以進行日誌記錄。我查看了sqlite3_sql,但它實際上並沒有打印出SQL語句,只是我用作sqlite3_prepare_v2的輸入的原始SQL。如何獲取發送到數據庫的確切SQL語句
這裏是我的函數添加一個值,我想也打印SQL語句的行。
int add_value(sqlite3* db, sqlite3_stmt * stmt, const char* oid, const char* value)
{
char sql[256] = {0};
sprintf(sql, "UPDATE table1 SET Value=? WHERE Field1=\"%s\"", oid);
printf("%s\n", sql);
int ret = ::sqlite3_prepare_v2(
db,
sql,
strlen(sql),
&stmt,
0);
/* How do I print out the sql statement to be sent to the database? */
ret = ::sqlite3_bind_text(stmt, 1, value, strlen(value), 0);
ret = sqlite3_step(stmt);
return ret;
}
對於一些背景,我將整數和字符串插入到數據庫中。那麼使用?是爲了簡化字符串的處理 - 即是否將引號放在值的周圍或不依賴於數據類型。但爲了調試的目的,我確實想記錄sql語句。