Я разрабатываю приложение для Android. Он имеет несколько потоков чтения и записи в базу данных Android SQLite. Я получаю следующее сообщение об ошибке:Как избежать ошибок блокировки SQLiteException
SQLiteException: error code 5: database is locked
Я понимаю, что SQLite блокирует весь дб на вставке/обновлении, но эти ошибки, как представляется только произойдет при установке/обновления в то время как я бегаю запрос на выборку. Запрос select возвращает курсор, который остается открытым довольно часто (несколько секунд несколько раз), в то время как я перебираю его. Если запрос выбора не запущен, я никогда не получаю блокировки. Я удивлен, что select может заблокировать db. Возможно ли это, или что-то еще происходит?
Каков наилучший способ избежать таких замков?
Вы говорите, оставив курсор открытым на некоторое время. Я считаю, что у меня такая же проблема, но мои курсоры поддерживаются listView. Вы когда-нибудь могли это исправить? – taer
Да, я исправил это, сразу прочитав содержимое курсора в коллекции, закрою курсор, а затем повторюсь по коллекции, чтобы выполнить трудоемкую работу. Если вы используете listView, вы должны сделать то же самое и использовать ArrayAdapter или написать собственный адаптер, расширяющий ArrayAdapter. – TheArchedOne
http://stackoverflow.com/questions/7657223/sqlite-exception-database-is-locked-issue/9503044#9503044 – junto