2012-03-15 11 views
0

Blackberryアプリケーションを起動すると、Webサービスコールが行われます。 Webサービスの応答が返ってくると、そのデータをSQLiteデータベースに格納します。DatabaseIOExceptionファイルシステムエラー(12)を処理する方法

いつでもSQLiteファイルへの接続は1つしかできませんが、これは私には問題があります。

私のアプリは、ユーザーが終了するとバックグラウンドで実行されます。彼は、(Webサービスやデータベースメソッドを呼び出す)起動が終了し、再度起動した場合、私はエラーを取得する:両方のWebサービス呼び出しが対話しようとしているため

DatabaseIOException File System Error (12) 

今私はこれが起こっていることを推測することができます同じデータベースファイル。実際、アプリケーション内のすべてのやりとりは、この1つのデータベースファイルで行われます。

私は私の質問の一つは以下のようになり推測:

データベースファイルへの2つの接続が次々に作成され、エラーがスローされた場合、両方の接続だけで死ぬか、または最初の接続は、それが何だったか終了しませんやってる?

また、このタイプのシナリオを処理するための最良の方法は何ですか。別の接続を開く前に、どのようなチェックを行う必要がありますか?

ありがとうございます。

答えて

1

ここでは、システムが正常に起動せず、データベースコードが実行される前の状態が2つあります。したがって、明らかにこの例外が発生し、2番目のことは、データベースを適切にクローズしていない可能性があることです。 finally blockを使用してデータベースを閉じることができます。

+0

ありがとうございました。データベースは正常終了していますが、取得しているデータがかなり大きいため、タイミングの問題が多いと思います。私は何が起こっていると思うのは、それがまだ何か他のものを処理しているときに、そのデータベースへの接続を開こうとしているということです。この例外がスローされた場合、接続はどうなりますか?彼らはどちらも殺されたのでしょうか、最初に実行されたのですか?そして2番目が殺されましたか? – PaulG

関連する問題