最近、この役に立たないエラー メッセージに頭がおかしくなりました。Androidエミュレーター内では発生しません。Eclipseから起動したUSBデバッグを介して(Android 2.3.6)デバイスで実行している場合にのみ発生します。
実際に例外がスローされることはなく、データベース クエリが実際に失敗することはありません (すべてが正常に動作しているように見えます) が、実行するクエリごとにこれらのエラーの少なくとも 1 つを受け取ります。
私が言うことができる限り、私はすべてを正しくやっています:
- シングルトンとして作成された1 つ
SQLiteOpenHelper
のインスタンスを使用しています (同期された静的メソッドは、アプリケーションのコンテキストを使用して単一のインスタンスを取得します)。 - などを
getWritableDatabase()
実行する必要がある場合にのみ呼び出し、残りの時間は を使用します。update
insert
getReadableDatabase()
- 書き込み可能なデータベースに関係するすべてのアクションも、確実に呼び出されるように
try/catch/finally
ブロックを使用してトランザクションにラップされます。endTransaction()
- 他のすべてのクエリはブロックにラップされて、
try/catch
可能なSQLException
応答をキャッチし、適切にログに記録されます。 - 私が使用している
close()
すべてSQLiteDatabase
のCursor
オブジェクトを呼び出しています。
これらのほとんどは、修正するまでエミュレーターでバックグラウンド エラーをスローしていたものであり、エミュレーターでアプリを実行すると、いかなる種類のデータベース エラーも表示されなくなりました。それでも、デバイスで実行すると、実行するすべてのクエリに対して、役に立たない「これは決して発生しないでください」というエラーが表示されますが、明らかな悪影響はありません。
もちろん、当分の間これらを無視していますが、他に考えられる原因は考えられません。私の SQL ステートメントはすべて有効であり、コードのほとんどは公式の Android チュートリアル (こちらなど) に基づいています。
これらのエラーが発生する理由を特定できる人はいますか? 他に考えられる原因は何ですか?