Android: завершение курсора, который не был деактивирован или закрыт - PullRequest
0 голосов
/ 31 июля 2011

У меня есть приложение, которое требует использования SQLite (база данных Android).

Я создал JPA-подобную структуру для моей модели и помощника данных.Проблема заключается в том, что когда я вызываю другой файл aHelper.search (int id) во время работы с helper.search (int id), в журнале появляется сообщение о завершении курсора.

return Child(cursor.getInt(0), new ParentHelper.search(cursor.getInt(1)));

Структура моей JPA-подобной модели иdatahelper выглядит следующим образом.

class Parent {
   int id;
   String name
   // constructor with field-parameter
   // getters and setters
}

class Child {
   int id;
   Parent parent;
   // constructor with field-parameter
   // getters and setters
}

class ParentHelper {
   // necessary SQLiteImpelemntations
   Parent search(int id) {
      // new Cursor implementation
      cursor.moveToFirst();
      return new Parent(cursor.getInt(0), cursor.getString(1));
   }
}

class ChildHelper {

   ParentHelper parentHelper;

   void close() {
      parenHelper.close()
      SQLiteDatabase.close();
      SQLiteOpenHelper.close();
   }

   ArrayList searchAll() {
      // new Cursor implementation
      cursor.moveToFirst();
      Child child = new Child(cursor.getInt(0), parentHelper.search(cursor.getInt(1)))
      ArrayList.add(child)
      cursor.close();
   }

   // necessary SQLiteImpelemntations
   Child search(int id) {
      // new Cursor implemenation
      cursor.moveToFirst();
      Child child = new Child(cursor.getInt(0), parentHelper.search(cursor.getInt(1)))
      cursor.close();
      return child;
   }   
}

1 Ответ

0 голосов
/ 31 июля 2011

Попробуйте закрыть курсор перед возвратом значения.

class ParentHelper {
// necessary SQLiteImpelemntations
Parent search(int id) {
    // new Cursor implementation
    cursor.moveToFirst();
    Parent p = new Parent(cursor.getInt(0), cursor.getString(1));
    cursor.close();
    return p;
    }
}

Сделайте то же самое для ChildHelper.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...