Android数据库被其他线程锁定

标签 android sqlite

我正在处理 android sqlite 数据库,我无法在其中将记录插入数据库。
在代码中,我在启动应用程序时只打开一次数据库,并且在那里设置了对我的 Application 类变量的引用,以便我可以从代码的任何部分访问数据库,这工作正常。

问题是:我可以访问数据库,但无法开始事务。它没有给我任何异常,但 sqLiteDatabaseWrite.isDbLockedByOtherThreads() 返回 TRUE。此外,在 logcat 中有一条警告消息:

WARN/SQLiteDatabase(19006): database lock has not been available for 30 sec. Current Owner of the lock is 1. Continuing to wait in thread: 14

任何解决方案?。

最佳答案

谢谢你和我在一起。其实我解决了我的问题。我使用 sqLiteDatabase.beginTransaction() 开始了一个 SQLite 数据库操作,但我忘记结束这个事务。我通过结束交易解决了这个问题。为了结束交易,我使用了以下代码:

sqLiteDatabase.setTransactionSuccessful();
sqLiteDatabase.endTransaction();

谢谢。

关于Android数据库被其他线程锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200509/

相关文章:

android - PopupWindow 的宽度/样式问题

android - 添加带有图像的折叠工具栏

java - 如何插入 NULL long 值?

sql - 条件JOIN产生两行

android - SQLite 异常 : near "ORDER" while compiling

android - 在 HTC One X 上,屏幕关闭时光传感器不工作

android - 防止 TextView 包装在父级中

java - 使用 Java 显示 FireFox cookie

android - 有一个我从 Iphone 项目 (.sqlite) 获得的数据库

android - 在 Android 中处理完整的磁盘存储