2017-03-01 13 views
1

このようなコードの一部で実行される実際の最終的なsqlite3クエリをどのように出力できますか?C sqlite3準備とバインド後に実際のクエリを出力する方法は?

int rc; 
sqlite3_stmt *res; 
char *query = ""; 
query = "SELECT count(*) FROM `db_report` WHERE `r_sn` = ?;"; 
rc = sqlite3_prepare_v2(db, query, -1, &res, 0); 
if (rc == SQLITE_OK) 
{ 
    sqlite3_bind_text(res, 1, sn, strlen(sn), SQLITE_STATIC); 
} 
int step = sqlite3_step(res); 
PRINT REAL QUERY 
sqlite3_finalize(res); 
return 0; 

どうもありがとう:)

答えて

5

あなたは、拡張バインドされたパラメータを使用して、最終的なクエリを含む文字列へのポインタを取得するためにsqlite3_expanded_sqlを使用することができます。

+1

お役立ち情報使用されることはありませんが、デバッグ目的には便利です。 – LPs

+0

"sqlite3_sql"を使って展開されていないクエリを取得していますが、 "sqlite3_expanded_sql"を使用しようとすると "関数 'sqlite3_expanded_sql'の暗黙の宣言があります。 cc -c libsqlite.c -lsqlite3 – willygroup

+1

@willygroup - [V3.14](https://www.sqlite.org/changes.html)に追加されました。あなたはそれ以上を持っていることを確認してください。 – StoryTeller

関連する問題