Цикл Sqlite по записям и ошибкам блокировки базы данныхC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Цикл Sqlite по записям и ошибкам блокировки базы данных

Сообщение Anonymous »

Я новичок в разработке SQLite. Я использую базу данных SQLite для своего приложения на C++. У меня возникла проблема с циклическим перебором данных, и я был бы признателен, если бы эксперты помогли мне...
У меня есть цикл, который проходит через записи Таблицы 1, и мне нужно получить данные из нескольких таблиц внутри цикла
Итак, поток кода:

Код: Выделить всё

sqlite3_open_v2(dbFileName, &myDb, SQLITE_OPEN_READWRITE , NULL);
Query1 = "SELECT * FROM TABLE1";
sqlite3_prepare_v2(
myDb,
Query1,
-1,
sqlite_stmt_1,
nullptr);

Looping through Table1 records with sqlite3_step(sqlite_stmt_1)
{
Query2 = "SELECT * FROM TABLE2 WHERE ..."
sqlite3_prepare_v2(
myDb,
Query2,
-1,
sqlite_stmt_2,
nullptr);
sqlite3_step(sqlite_stmt_2);

}
when SQLITE_DONE OF sqlite_stmt_1 Query1
{
sqlite3_reset(sqlite_stmt_1);
sqlite3_finalize(sqlite_stmt_1);
sqlite3_close(myDb);
}
Проблема в том, что при выполнении Query2 внутри цикла я получаю ошибку БД № 5 (база данных заблокирована), если sqlite_stmt_1 не сброшен. Мне нужно сбросить, завершить и закрыть базу данных после выполнения каждого запроса, чтобы можно было запустить новый запрос. Выполнение этого внутри цикла приводит к разрыву цикла, поскольку оператор очищается после первой записи.
Как это можно решить?
Ваша помощь очень признателен.
Спасибо.
Пытался пропустить сброс и финализацию, но в итоге обнаружилось множество ошибок, связанных с блокировкой базы данных.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ked-errors
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»