在事务期间崩溃后,Android SQLite数据库被锁定

时间:2011-04-09 11:46:21

标签: android sqlite

如果我的应用程序在事务期间被杀死(即在下面的源代码中的位置1),则数据库被锁定。应用程序被使用任务管理器终止或从调试器内终止(我知道不应该使用任务管理器,我知道在此阶段终止应用程序是我的错;-)) - 但无论如何,这可能发生。

如果我然后尝试重启应用程序,sqlite无法打开数据库,因为它被锁定(即使重启设备后)。在文件系统上有数据库文件和日志文件。如何恢复数据库并再次打开它?

  final SQLiteDatabase db = mDb.getDb();
  try {
       db.beginTransaction();
       //execute some updates (1)
        db.setTransactionSuccessful();
   } finally {
        db.endTransaction();
   }

此时只能由一个线程访问数据库,并且只有一个数据库实例。

1 个答案:

答案 0 :(得分:0)

对我来说有用的是在打开数据库之前删除日志文件......

或以某种方式处理损坏的日记文件。