Должен ли я вызвать .close () как для SQLiteDatabase, так и для SQLiteOpenHelper - PullRequest
6 голосов
/ 03 февраля 2012
SQLiteOpenHelper dbOpenHelper = new (ctx, nameofdb);
SQLiteDatabase db = dbOpener.getWritableDatabase();

Нужно ли мне звонить .close() по обоим из них, или достаточно одного из них?Если да, то какой?

SQLiteDatabase
SQLiteOpenHelper

Проблема, с которой я столкнулся, заключается в том, что я не вижу ни одной конкретной строки в представлении DDMS в Eclipse, но когда я получаю ее с помощью курсора, это показывает, что у меня есть эта запись.Поэтому мне интересно, это может быть вызвано неправильным закрытием базы данных?Любой, кто может помочь, был бы великолепен.Спасибо!

1 Ответ

5 голосов
/ 03 февраля 2012

Если вы посмотрите документы для SQLiteOpenHelper.close () ...

публичный синхронизированный void close ()

Закрыть любой открытый объект базы данных.

Он не закрывает SQLiteOpenHelper, он закрывает базу данных.

В дополнение к этому, если вы правильно поняли свой код, вы можете полностью избежать работы с объектом базы данных.

Например, если у вас есть запрос, который вы регулярно используете, чтобы получить курсор для адаптера для заполнения представления, создайте метод в своем классе SQLiteOpenHelper и поместите запрос в него.

Другими словами, не получайте ссылку на фактическую базу данных в вашем основном коде, просто заставьте SQLiteOpenHelper сделать все за вас.

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