1
私の質問はこのoneと非常によく似ていますが、少し異なります。 SQLCiperで暗号化されたテーブル内のすべてのクエリを単純に検索しようとすると、次のエラーが発生します。 SQLCipher - 非アクティブ化されていないカーソルの終了エラー
12-29 11:37:54.329: E/Cursor(10837): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/com.company.myapp/databases/data, table = data_table, query = SELECT rowid, data FROM data_table
12-29 11:37:54.329: E/Cursor(10837): info.guardianproject.database.sqlcipher.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
12-29 11:37:54.329: E/Cursor(10837): at info.guardianproject.database.sqlcipher.SQLiteCursor.<init>(SQLiteCursor.java:225)
12-29 11:37:54.329: E/Cursor(10837): at info.guardianproject.database.sqlcipher.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:53)
12-29 11:37:54.329: E/Cursor(10837): at info.guardianproject.database.sqlcipher.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1410)
12-29 11:37:54.329: E/Cursor(10837): at info.guardianproject.database.sqlcipher.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1289)
12-29 11:37:54.329: E/Cursor(10837): at info.guardianproject.database.sqlcipher.SQLiteDatabase.query(SQLiteDatabase.java:1243)
12-29 11:37:54.329: E/Cursor(10837): at info.guardianproject.database.sqlcipher.SQLiteDatabase.query(SQLiteDatabase.java:1325)
12-29 11:37:54.329: E/Cursor(10837): at com.company.appName.DatabaseManager.queryAllItems(DatabaseManager.java:105)
は、私はそれを使用して行われていたが、私がそれを使用して起動することができるよ前であっても、私はこのエラーを取得していているようです後
Cursor
を閉じるのを忘れた場合、このエラーはのみ起こるだろうと思いました。あなたが問題を解決します
startManagingCursor(c);
を呼び出す場合、
public Cursor queryAllItems() {
return database.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_DATA}, null, null, null, null, null);
}
エラーは、「Cursor」がここで開かれたことを示します。私には、 'queryAllItems()'が正常に呼び出されたことを意味しますが、 'Cursor'を閉じたことはありません。最初に' Cursor'を作成した場所を教えてくれます。 – CommonsWare
あなたはまったく正しいです、私はいくつかのデバッグマーカーを入れて、すべてのクエリが完了した後でエラーが発生していることに気付きました。私はそのスタックトレースに惑わされたと思います。 – Brian