Как безопасно прочитать из базы данных, которую может использовать другой процесс? - PullRequest
1 голос
/ 30 апреля 2011

Я хотел бы прочитать некоторые данные из базы данных webview.db, которая создается, когда ваше приложение использует WebView. Тем не менее, эта база данных управляется классами, которые в основном находятся на уровне пакета или не предоставляют много возможностей доступа через apis.

Поскольку я не могу делиться объектами или блокировками их баз данных, как я могу безопасно считывать содержимое из этой базы данных, не получая ошибок «база данных заблокирована» или подобные исключения?

Мне нужно только читать, мне не нужно писать.

Если нет способа безопасно получить на нем запросы / курсоры sql, есть ли способ безопасно скопировать файл webview.db потокобезопасным способом? Есть ли опасность получить поврежденную копию?

Большое спасибо

1 Ответ

1 голос
/ 30 апреля 2011

Я думаю, что все блокировки находятся на уровне sqlite, а не в java-коде, поэтому вы должны иметь возможность просто открыть базу данных и читать из нее, не путая веб-представление.
Однако по той же причине вы должны быть готовы к ошибкам блокировки и повторять свои запросы до тех пор, пока блокировка не исчезнет. БД будет заблокирована, когда веб-просмотр будет делать заявления об изменении данных.
Надеюсь, что веб-просмотр не установил эксклюзивную блокировку для всех БД на все время его работы, но я не вижу причины для этого.

...