Android SQLite - 更改journal_mode

时间:2011-03-02 04:15:25

标签: android sqlite pragma

我正在尝试通过代码更改数据库的journal_mode。我尝试了SQLiteDatabase.execSQL(“PRAGMA journal_mode = OFF”),但它失败了,因为,表达式“PRAGMA journal_mode = OFF”返回结果(我从终端验证了这一点),因此Android认为这是一个查询并抱怨我应该使用execQuery代替。但我想要执行的不是查询。

我还尝试将pragma表达式编译为SQLiteStatement并调用execute方法,但结果相同。

有人可以通过代码建议任何替代方案吗?

谢谢, 兰吉特

2 个答案:

答案 0 :(得分:3)

也许你正在遇到这个execSQL docs谈论的问题:

  

使用enableWriteAheadLogging()时,此类会自动管理journal_mode。因此,如果您的应用使用enableWriteAheadLogging()

,请不要使用“PRAGMA journal_mode”语句设置journal_mode

检查您是否使用了提前写入日志,然后它可能会有效。

更新:正如Ranjit在评论中所说,这应该有效:

Cursor c1 = db.rawQuery("PRAGMA journal_mode=OFF", null); 
c1.close();

答案 1 :(得分:0)

可以使用下一个命令完成:

db.rawExecSQL("PRAGMA journal_mode=OFF;");

(无需根据Robert's answer的一条评论中的建议创建Cursor