そのため、現在、次のような単純な SQL クエリをコンパイルしています。
const char *sqlQuery = "SELECT value FROM settings WHERE name=? LIMIT 1";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlQuery, -1, &compiledStatement, nil) == SQLITE_OK)
{
sqlite3_bind_text(compiledStatement, 1, [name UTF8String], -1, SQLITE_TRANSIENT);
while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{
NSString *theValue = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
// ...
}
}
ただし、呼び出しているテーブル名を変更できるようにしたいと考えています。sqlQuery を次のように変更できると思いました。
const char *sqlQuery = "SELECT value FROM ? WHERE name=? LIMIT 1";
そして、名前の値をバインドする前にバインドしますが、これは機能しません。これは、選択引数に対してのみ機能するように設計されていると思います...
ここにテーブル名を挿入する方法があるかどうかは誰にもわかりませんか、それともプレーンテキストで行う必要がありますか?