База данных открыта / закрыта - база данных не открыта - PullRequest
3 голосов
/ 02 марта 2011

В каждом занятии я добавил в метод onCreate() следующие строки:

database = new DatabaseHelper(this);  
database.open();

и в каждом onDestroy() методе следующая строка:

database.close();

Таким образом, пока действие не уничтожено, база данных открыта.

Иногда некоторые пользователи принудительно закрываются, если мое приложение хочет что-то обновить в базе данных.

Following error:
java.lang.IllegalStateException: database not open
at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1776)
at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1731)

Как это может произойти?
Если я открою базу данных в onCreate() и закрою ее в onDestroy() Должна ли она быть всегда открыта?!

1 Ответ

3 голосов
/ 02 марта 2011

Бинниб прав, скорее всего, ваша база данных закрыта в фоновом режиме onDestroy, в то время как в активной активности возникает ошибка. Вы должны открыть / закрыть базу данных как раз в то время, когда вам нужно сохранить / извлечь данные.

UPD:

Посмотрите на документы разработчика Google , getWritableDatabase возвращает кэшированный объект, если БД уже была открыта.

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