Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Exception sqlite3:由于语句未结束,无法关闭_Exception_Sqlite - Fatal编程技术网

Exception sqlite3:由于语句未结束,无法关闭

Exception sqlite3:由于语句未结束,无法关闭,exception,sqlite,Exception,Sqlite,我有两个sqlite连接,执行方式如下(CMyDatabase是sqlite3的派生类): CMyDatabase*dbConnection1=新的CMyDatabase; dbConnection1->OpenDataBase(CQCommon::GetModulePath()+L“test.db”); CMyDatabase*dbConnection2=新的CMyDatabase; dbConnection2->OpenDataBase(CQCommon::GetModulePath()+L

我有两个sqlite连接,执行方式如下(CMyDatabase是sqlite3的派生类):

CMyDatabase*dbConnection1=新的CMyDatabase;
dbConnection1->OpenDataBase(CQCommon::GetModulePath()+L“test.db”);
CMyDatabase*dbConnection2=新的CMyDatabase;
dbConnection2->OpenDataBase(CQCommon::GetModulePath()+L“test.db”);
dbConnection2->beginters();
CString updateStr(“更新ImageAlbumEntry set ImageID=2,其中ID=1;”;
dbConnection2->ExecNoQuery(updateStr);
CString queryStr(“从ImageAlbumEntry中选择ImageID,其中ID=1;”;
cppsqlite3queryqueryresult;
dbConnection2->ExecQuery(queryStr、queryResult);

coutCloseDataBase()。我遇到的错误是“由于未完成的声明而无法关闭”。有人能解释问题的原因和解决方法吗?谢谢大家!

取决于您使用的包装器。我猜你用的是类似的

如果这是真的,那么您需要发出CppSQLite3Query::finalize命令来告诉sqlite3您已经完成了查询

从sqlite3文档中

sqlite3\u finalize()

此例程销毁先前调用sqlite3_prepare()创建的预处理语句。必须通过调用此例程来销毁每个准备好的语句,以避免内存泄漏。

请使用代码块中的命令重新格式化您的问题,以提高可读性
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();