我想查询存储在只读文件系统上的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尝试创建日记,我如何执行查询?
此致