SQLiteOpenHelper dbOpenHelper = new (ctx, nameofdb);
SQLiteDatabase db = dbOpener.getWritableDatabase();
Должен ли я позвонить .close()
на обоих из них, или только один из них достаточно? Если да, то какой?Должен ли я называть .close() на обоих SQLiteDatabase и SQLiteOpenHelper
SQLiteDatabase
SQLiteOpenHelper
Проблема, которую я имею что я не вижу одну конкретную строку в представлении DDMS в Eclipse, но когда я использую курсор, чтобы получить его, это показывает, что у меня есть этот вход. Поэтому я думаю, что это может быть вызвано неправильным закрытием базы данных? Любой, кто может помочь, будет замечательным. Благодаря!
Что такое [принцип единой ответственности] (http://en.wikipedia.org/wiki/Single_responsibility_principle)? Я думал, что класс 'SQLiteOpenHelper' использует только [для помощи] для открытия (для создания \ обновления) базы данных. –
@LeonidSemyonov: Можно утверждать, что, просто расширяя любой класс и добавляя функциональность (новые методы или интерфейсы реализации), все равно добавляет дополнительные обязанности ... но выполнение этого является основополагающим принципом OOD/OOP. В Android нередко создается универсальный класс «помощник» DB, который сам поддерживает 'SQLiteOpenHelper'. Моя точка зрения в некоторых случаях: «SQLiteOpenHelper» может быть расширен, чтобы обеспечить * ALL * методов «помощника» БД, а не иметь отдельную «вспомогательную» POJO базы данных. – Squonk
@Squonk закрывает любой открытый объект базы данных, подразумевает, что он закрывает все экземпляры SqliteDatabase, открытые в приложении (при условии, что их несколько), или закрывает только те, которые привязаны к текущему объекту SqliteOpenHelper? – aandis