У меня есть два подключения к sqlite, и я выполняю их, как показано ниже (CMyDatabase является производным классом sqlite3):
CMyDatabase* dbConnection1 = new CMyDatabase;
dbConnection1->OpenDataBase(CQCommon::GetModulePath() + L"test.db");
CMyDatabase* dbConnection2 = new CMyDatabase;
dbConnection2->OpenDataBase(CQCommon::GetModulePath() + L"test.db");
dbConnection2->BeginTrans();
CString updateStr("update ImageAlbumEntry set ImageID = 2 where ID = 1;");
dbConnection2->ExecNoQuery(updateStr);
CString queryStr("select ImageID from ImageAlbumEntry where ID = 1;");
CppSQLite3Query queryResult;
dbConnection2->ExecQuery(queryStr, queryResult);
cout<<queryResult.getIntField(0)<<endl;
dbConnection2->EndTrans(TRUE);
dbConnection2->CloseDataBase();
dbConnection1->CloseDataBase();
Теперь, когда я вызываю dbConnection1-> CloseDataBase (). Я столкнулся с ошибкой: «Невозможно закрыть из-за незавершенных заявлений». Может ли кто-нибудь объяснить причину и способ решения проблемы? Спасибо!


Зависит от того, какую оболочку вы используете. Я предполагаю, что вы используете такой же, как cppSQLite3
Если это правда, то вам нужно выполнить команду CppSQLite3Query :: finalize, чтобы сообщить sqlite3, что вы закончили свой запрос.
Из документации sqlite3 здесь
sqlite3_finalize ()
Эта процедура уничтожает подготовленный оператор, созданный предыдущим вызовом sqlite3_prepare (). Каждый подготовленный оператор должен быть уничтожен с помощью вызова этой подпрограммы, чтобы избежать утечки памяти.
Пожалуйста, переформатируйте свой вопрос с помощью ваших команд в блоке кода, чтобы улучшить читаемость.