読み取り専用ファイル システムに保存されている SQLite データベースにクエリを実行したいと考えています。PRAGMA
ステートメントは正確にこれを行う必要があります。
sqlite3_stmt* pVM;
sqlite3* mpDB;
sqlite3_open_v2(szFile, &mpDB, SQLITE_OPEN_READONLY, 0); // SQLITE_OK
sqlite3_exec(mpDB, "PRAGMA journal_mode = OFF;", NULL, 0, 0);
sqlite3_prepare_v2(mpDB, "SELECT samplevalue FROM table;", 1, &pVM, 0); // SQLITE_OK
if (sqlite3_step(pVM) == SQLITE_ROW)
{
// Get value
printf("Value: %d", sqlite3_column_int(pVM, 0)); // OK but journal is still
// created on disk
}
sqlite3_finalize(pVM); // SQLITE_OK
私の 2 番目の推測は、PRAGMA
ステートメントが各クエリ ステートメントの一部である可能性があるということでした。
sqlite3_prepare_v2(mpDB, "PRAGMA journal_mode = MEMORY; SELECT samplevalue FROM table;", 1, &pVM, 0); // SQLITE_OK
if (sqlite3_step(pVM) == SQLITE_ROW)
{
// Get value
printf("Value: %d", sqlite3_column_int(pVM, 0)); // Value "0" is returned
}
PRAGMA
部分のみが実行されるため、これは機能しません。
SQLite がジャーナルを作成しようとせずにクエリを実行するにはどうすればよいですか?
よろしく、