Я нашел решение своей проблемы: я использую транзакцию при анализе данных и вставке данных в базу данных.Но между ними я пытаюсь получить некоторые значения из базы данных.Таким образом, эта иерархия, как показано ниже
<transaction>
<Insert>
<select>
<insert>
</transaction>
Я пытаюсь выполнить запрос выбора для базы данных, пока база данных находится в транзакции.На самом деле здесь есть решение о параллельной транзакции
Команда SQL "BEGIN TRANSACTION"
(ключевое слово TRANSACTION
является необязательным) используется для вывода SQLite из режима автоматической фиксации.Обратите внимание, что команда BEGIN
не получает никаких блокировок в базе данных.После команды BEGIN
блокировка SHARED
будет получена при выполнении первого оператора SELECT.Зарезервированная блокировка будет получена при выполнении первого оператора INSERT
, UPDATE, or DELETE
.Блокировка EXCLUSIVE
не будет получена до тех пор, пока кэш памяти не заполнится и не будет отправлен на диск или пока транзакция не будет зафиксирована.Таким образом, система задерживает блокировку доступа на чтение к файлу файла до последнего возможного момента.
Я только что удалил строки запроса выбора из кода, пока база данных находится в транзакции
Редактировать
Также существует еще одно решение, которое заключается в том, что вы устанавливаете блокировку включения false как
mDb.setLockingEnabled(false);