私はSQLite(Androidのデータベース)を必要とするアプリケーションを持っています。Android:非アクティブ化またはクローズされていないカーソルの確定
モデルとデータヘルパーにJPAのような構造を作成しました。 問題は、helper.search(int id)上で別のaHelper.search(int id)を呼び出したときに、カーソルの終了エラーが記録されるということです。
return Child(cursor.getInt(0), new ParentHelper.search(cursor.getInt(1)));
私のJPAのようなモデルとデータヘルパーの構造は、このようになります。
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;
}
}
コードを更新しました。複数のカーソルを(JPAのように)階層的に実行するとスタックする。 Child.search()。Parent.search()を使用したCursor。Cursor。 –