在我的Android应用程序中,有两个进程,比如进程A和B
有趣的是,如果进程A试图访问sqlite数据库,一切都很好。 但是,如果进程B这样做,将显示以下异常
android.database.sqlite.SQLiteException:无法打开数据库文件: 开始独家;
仅供参考,实际上并非我的应用尝试使用SQLite数据库。相反,我使用Google Analytics跟踪用户,并使用SQLite数据库。
为什么会这样?谢谢。
答案 0 :(得分:2)
实际上您使用的是Transaction
。当事务正在进行时,其他任何进程都无法访问数据库。
我认为这就是你得到这个例外的原因
有时会发生
beginTransaction
时。答案 1 :(得分:2)
close
与进程A 数据库建立连接。 concurrency
。db.close();
我希望这可能是你的问题。
答案 2 :(得分:1)
如果进程A试图访问sqlite数据库,一切都很好。 但是,如果进程B这样做,将显示以下异常
Sqlite只会从您的应用程序数据库目录中打开数据库。
DB_PATH = "/data/data/"+ context.getPackageName() + "/databases/";
在您的情况下,数据库存在于进程A目录中,因此它可以访问它。但是进程B无法从进程A目录中读取数据库。
您可以做的是通过提供上述路径来复制Process B目录中的数据库文件。