好的,我在关闭数据库连接而不关闭它的情况下感到有些奇怪。这是代码。
boolean dbOpen = database.isOpen();
for (PlanModel plan : plans) {
dbOpen = database.isOpen();
Map<MessierObjectModel, NoteModel> planObjects = new HashMap<MessierObjectModel, NoteModel>();
query = "select astro_plan_entry_id, messier_catalog_id from astro_plan_entry where astro_plan_id = " + plan.getPlanId();
cursor = database.rawQuery(query, null);
dbOpen = database.isOpen();
if (cursor.getCount() > 0 && cursor.moveToFirst()) {
do {
NoteModel objectNote = getPlanObjectNote(cursor.getInt(0));
planObjects.put(getMessierObject(cursor.getInt(1)), objectNote);
} while (cursor.moveToNext());
}
plan.setPlanObjects(planObjects);
cursor.close();
}
close();
第一次运行循环,数据库始终保持打开状态。但是,第二次通过 dbOpen 是错误的。我不知道为什么会这样,并且数据库是一个类字段,在调用 close() 方法之前它不会被关闭。
编辑:好的,看起来它正在从cursor.moveToNext()关闭。或者至少如果我在 while 循环之后立即检查它是关闭的。我仍然不知道发生了什么,但至少这是向前迈出的一步。