2

私のAndroidアプリには、プロセスAとBの2つのプロセスがあります

プロセス A が sqlite データベースにアクセスしようとすると、すべてうまくいくというのはおかしいです。ただし、プロセスBがそうすると、次の例外が表示されます

android.database.sqlite.SQLiteException: データベース ファイルを開けません: BEGIN EXCLUSIVE;

参考までに、実際には私のアプリは SQLite データベースを使用しようとはしていません。代わりに、Google アナリティクスを使用してユーザーを追跡し、SQLite データベースを使用しています。

なぜこれが起こるのですか?ありがとうございました。

4

3 に答える 3

2

実際に使用しているのはTransaction.and トランザクションが進行中の場合、他のプロセスはデータベースにアクセスできません。

それがあなたがこの例外を受け取っている理由だと思います

時々それが発生します

  1. beginTransaction開いていないデータベース接続で呼び出されたとき。
  2. SQL ステートメントに構文エラーが含まれている場合
于 2012-06-20T06:06:56.010 に答える
2
  • プロセス Bでデータベースを使用する前に、まずプロセス Acloseのデータベースに接続する必要があります。
  • これで解決しますconcurrency
  • を使用しておりますdb.close();

これがあなたの問題であることを願っています。

于 2012-06-20T06:36:23.027 に答える
1

プロセス A が sqlite データベースにアクセスしようとすると、すべて問題ありません。ただし、プロセスBがそうすると、次の例外が表示されます

Sqlite は、アプリケーション データベース ディレクトリからのみデータベースを開きます。

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

あなたの場合、データベースはプロセスAディレクトリに存在するため、アクセスできますが、プロセスBはプロセスAディレクトリからデータベースを読み取ることができません。

できることは、上記のパスを指定して、そのデータベース ファイルをプロセス B ディレクトリにコピーすることです。

于 2012-06-20T06:02:22.527 に答える