0

わかりました、データベース接続を閉じずに閉じると、奇妙なことが起こります。これがコードです。

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 の 2 回目は false です。なぜこれが起こっているのかわかりません。データベースはクラス フィールドであり、close() メソッドが呼び出されるまで閉じられません。

編集:それはそれがcursor.moveToNext()から閉じているように見えます。または、少なくともwhileループの直後にチェックすると、閉じられます。まだどうなるかわかりませんが、少なくとも一歩前進です。

4

0 に答える 0