Android SQLite - 更改journal_mode

发布于 2024-10-19 17:44:57 字数 305 浏览 2 评论 0原文

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

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

有人可以建议任何替代方案来通过代码实现这项工作吗?

谢谢, 兰吉特

I am trying to alter the journal_mode for my database, through code. I tried SQLiteDatabase.execSQL("PRAGMA journal_mode=OFF") but it fails because, the expression "PRAGMA journal_mode=OFF" returns a result (I verified this from the terminal), and so Android thinks this is a query and complains that I should be using execQuery instead. But what I am trying to execute isn't a query.

I also tried compiling the pragma expression to a SQLiteStatement and invoked the execute method, but same result.

Can someone suggest any alternatives to make this work through code?

Thanks,
Ranjit

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

辞别 2024-10-26 17:44:57

也许您正遭受这个问题 execSQL 文档谈论:

当使用enableWriteAheadLogging()时,journal_mode由此类自动管理。因此,如果您的应用使用enableWriteAheadLogging(),请勿使用“PRAGMA Journal_mode'”语句设置journal_mode

检查您是否没有使用预写日志记录,然后它可能会起作用。

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

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

Perhaps you are suffering from this problem that the execSQL docs talk about:

When using enableWriteAheadLogging(), journal_mode is automatically managed by this class. So, do not set journal_mode using "PRAGMA journal_mode'" statement if your app is using enableWriteAheadLogging()

Check that you are not using write ahead logging and then it might work.

Update: As Ranjit said in the comments, this should work:

Cursor c1 = db.rawQuery("PRAGMA journal_mode=OFF", null); 
c1.close();
メ斷腸人バ 2024-10-26 17:44:57

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

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

无需创建 Cursor,因为 罗伯特的回答)

It can be done with the next command:

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

(No need to create a Cursor as it is suggested in one of the comments to Robert's answer)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文