3

この後にコンパイルされたステートメントをログに記録したい:

if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)    {

    sqlite3_bind_int( compiledStatement, 1, updateThis.web_id);
    [...]

}
NSLog(@"Put out the complete SQLite Statement.");

直接出力が失敗しました。これはそれを行う方法ではないと思います:

NSLog(@"%@",compiledStatement);
4

1 に答える 1

9

コンパイル済みステートメントを印刷することはできません。できることは、sqlite3_traceコールバック関数を実装することです。これにより、実行されたすべてのSQLステートメントが出力されます。

関数を実装するには、 @implementation ブロックの前にこれを追加します

void sqliteCallbackFunc(void *foo, const char* statement) {
    NSLog(@"=> %s", statement);
}

これがポイントする関数です。

この関数を指すには、次の単純な呼び出しを行います。

sqlite3_trace(db, sqliteCallbackFunc, NULL);

于 2013-02-06T16:38:19.130 に答える