我正在努力确保我的数据库始终只包含10个关键字条目,而且只包含现有关键字的那些项目。这就是我想出的:
SQLiteDatabase db = this.getWritableDatabase();
while (getKeywordsCount() > leaveN){
Cursor cursor = db.rawQuery("SELECT MIN(" + KEYWORDS_KEY_ID + ") FROM " + TABLE_KEYWORDS, null);
long minId = Long.parseLong(cursor.getString(0));
cursor.close();
db.delete(TABLE_KEYWORDS, KEYWORDS_KEY_ID + " = ?", new String[] {String.valueOf(minId)});
db.delete(TABLE_ITEMS, ITEMS_KEY_KEYWORD_ID + " = ? ", new String[] {String.valueOf(minId)});
}
db.close();
执行此方法时,我会遇到异常:
java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase:
它指向行:
Cursor cursor = db.rawQuery("SELECT MIN(" + KEYWORDS_KEY_ID + ") FROM " + TABLE_KEYWORDS, null);
为什么会这样?这是因为我连续两次调用db.delete吗?