можем ли мы полностью заполнить запросы getWritableDatabase () и getReadableDatabase () одновременно в базе данных sqlite для Android - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь запросить некоторые данные из базы данных SQLite в приложении Android из двух потоков. Можно ли одновременно вызывать getReadableDatabase () и getWritableDatabase () для одного экземпляра БД в Android.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Ответ Да, но в некоторых ситуациях нет.

В основном getReadableDatabase получит «доступную для записи» базу данных , если база данных не может быть только прочитана. В то время как getWritableDatabase потерпит неудачу, если база данных не будет доступна для записи.

Согласно: -

getReadableDatabase добавлено в API уровня 1 SQLiteDatabase

getReadableDatabase ()

Создать и / или открыть базу данных.

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

Если проблема устранена, будущий вызов getWritableDatabase() может завершиться успешно, в этом случае объект базы данных только для чтения будет закрыт, а объект чтения / записи будет возвращен в будущем.

getReadableDatabase

Таким образом, если база данных доступна для записи, то определенно Да , но если база данных доступна только для чтения, есть вероятность, что getWritableDatabase не удастся, и, следовательно, «Нет» для этой вероятной редкой ситуации.

Как правило, если специально не требуется обрабатывать ситуацию, когда база данных не может быть открыта для записи, использование getWritableDatabase, вероятно, действительно то, что нужно. т. е. действительно getReadableDatabase дает вам некоторый доступ, если база данных не доступна для записи, но может быть прочитана. Как правило, он не защищает от записи / обновления базы данных.

0 голосов
/ 01 мая 2018

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

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