Android android.database.sqlite.SQLiteException:无法打开数据库文件

时间:2012-06-20 05:56:55

标签: android sqlite google-analytics

在我的Android应用程序中,有两个进程,比如进程A和B

有趣的是,如果进程A试图访问sqlite数据库,一切都很好。 但是,如果进程B这样做,将显示以下异常

  

android.database.sqlite.SQLiteException:无法打开数据库文件:   开始独家;

仅供参考,实际上并非我的应用尝试使用SQLite数据库。相反,我使用Google Analytics跟踪用户,并使用SQLite数据库。

为什么会这样?谢谢。

3 个答案:

答案 0 :(得分:2)

实际上您使用的是Transaction。当事务正在进行时,其他任何进程都无法访问数据库。

我认为这就是你得到这个例外的原因

有时会发生

  1. 在未打开的数据库连接上调用beginTransaction时。
  2. 当SQL语句包含语法错误时

答案 1 :(得分:2)

  • 在开始使用进程B 的数据库之前,您必须先close进程A 数据库建立连接。
  • 这将解决您的concurrency
  • 我们使用db.close();

我希望这可能是你的问题。

答案 2 :(得分:1)

  

如果进程A试图访问sqlite数据库,一切都很好。   但是,如果进程B这样做,将显示以下异常

Sqlite只会从您的应用程序数据库目录中打开数据库。

DB_PATH = "/data/data/"+ context.getPackageName() + "/databases/"; 

在您的情况下,数据库存在于进程A目录中,因此它可以访问它。但是进程B无法从进程A目录中读取数据库。

您可以做的是通过提供上述路径来复制Process B目录中的数据库文件。