Android SQLCipher-结束尚未停用的游标时出错
我的问题与此非常相似,但略有不同。当我试图查询表中已由加密的所有内容时,会出现以下错误Android SQLCipher-结束尚未停用的游标时出错,android,sqlite,cursor,Android,Sqlite,Cursor,我的问题与此非常相似,但略有不同。当我试图查询表中已由加密的所有内容时,会出现以下错误 创建游标后,如果调用startManagingCursor(c)将解决此问题。这里的“c”是游标引用。创建游标后,如果调用开始管理游标(c)将解决此问题。这里的“c”是游标引用。我被堆栈跟踪误导了,似乎我只需要在查询的所有操作完成后调用游标。deactivate()和游标。close()。我被堆栈跟踪误导了,似乎我只需要调用游标。deactivate()和Cursor.close()在我对查询的所有操作完成后
创建游标后,如果调用
startManagingCursor(c)代码>将解决此问题。这里的“c”是游标引用。创建游标后,如果调用开始管理游标(c)代码>将解决此问题。这里的“c”是游标引用。我被堆栈跟踪误导了,似乎我只需要在查询的所有操作完成后调用游标。deactivate()
和游标。close()
。我被堆栈跟踪误导了,似乎我只需要调用游标。deactivate()
和Cursor.close()
在我对查询的所有操作完成后。该错误表示光标已在此处打开。对我来说,这意味着您成功地调用了queryAllItems()
,但从未关闭过光标
,它告诉您最初创建光标的位置。您完全正确,我添加了两个调试标记,并注意到在所有查询完成后发生了错误。我猜我被堆栈跟踪误导了。错误表明光标
“在这里打开了”。对我来说,这意味着您成功地调用了queryAllItems()
,但从未关闭过光标
,它告诉您最初创建光标的位置。您完全正确,我添加了两个调试标记,并注意到在所有查询完成后发生了错误。我想我被那堆痕迹误导了。
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)
public Cursor queryAllItems() {
return database.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_DATA}, null, null, null, null, null);
}