База данных Android заблокирована другим потоком - PullRequest
4 голосов
/ 20 ноября 2011

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

Проблема в том, что я могу получить доступ к базе данных, но не могу начать транзакцию.Это не дает мне никаких исключений, но sqLiteDatabaseWrite.isDbLockedByOtherThreads() возвращает TRUE.Также в logcat есть одно предупреждающее сообщение:

WARN / SQLiteDatabase (19006): блокировка базы данных не была доступна в течение 30 секунд.Текущий владелец блокировки - 1. Продолжение ожидания в потоке: 14

Какие-либо решения?.

1 Ответ

7 голосов
/ 21 ноября 2011

Спасибо, что были со мной. На самом деле я решил свою проблему. Я начал одну операцию БД SQLite с помощью sqLiteDatabase.beginTransaction() и забыл завершить эту транзакцию. Я решил проблему, прекратив транзакцию. Для завершения транзакции я использовал следующий код:

sqLiteDatabase.setTransactionSuccessful();
sqLiteDatabase.endTransaction();

Спасибо.

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