我想查询存储在只读文件系统上的 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
我的第二个猜测是该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 不尝试创建日志的情况下执行查询?
问候,