当前位置:  开发笔记 > 数据库 > 正文

如何避免SQLiteException锁定错误

如何解决《如何避免SQLiteException锁定错误》经验,为你挑选了1个好方法。

我正在开发一个Android应用程序.它有多个线程读取和写入Android SQLite数据库.我收到以下错误:

SQLiteException:错误代码5:数据库已锁定

我理解SQLite会在插入/更新时锁定整个数据库,但在我运行select查询时插入/更新时似乎只会发生这些错误.select迭代返回一个游标,当我迭代它时,它会被打开很多(几次几秒).如果select查询没有运行,我永远不会得到锁.我很惊讶select可以锁定数据库.这是可能的,还是还有其他事情发生?

什么是避免这种锁定的最佳方法?



1> Graham Borla..:

您可能在各种线程中打开和关闭多个数据库连接.这是一个坏主意.只需打开一个数据库连接,并在任何地方重用它; 然后,SQLite将确保正确序列化并发访问.

与jcwenger的答案一样,使用ContentProvider是实现此目的的另一种方法,但需要对代码进行更多的干扰性更改.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有