如何关闭SQLite日志以便从只读文件系统进行访问?

时间:2014-09-29 05:20:27

标签: c sqlite pragma journal

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

此致

0 个答案:

没有答案