sqlite3:kann Nicht schließen wegen unfinalised Aussagen
Habe ich zwei sqlite-verbindungen und führen Sie wie unten(CMyDatabase ist eine abgeleitete Klasse von 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();
Wenn ich jetzt aufrufen dbConnection1->CloseDataBase(). Ich traf mich mit dem Fehler angegeben als 'Nicht geschlossen werden aufgrund unfinalised Aussagen'. Kann jemand erklären, den Grund und beheben, die Methode des problem? Danke!
Bitte formatieren Sie Ihre Frage mit Ihrer Befehle in einen code-block zur besseren Lesbarkeit
InformationsquelleAutor user26404 | 2008-12-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hängt davon ab, welche wrapper, die Sie verwenden. Ich vermute, Sie sind mit einem ähnlich cppSQLite3
Wenn das wahr ist, dann müssen Sie ein Problem CppSQLite3Query::finalize Befehl aus, um zu sagen, sqlite3, dass Sie fertig sind mit Ihrer Abfrage.
Aus der sqlite3-Dokumentation hier
sqlite3_finalize()
Diese routine zerstört eine vorbereitete Anweisung erstellt, die von einem vorherigen Aufruf von sqlite3_prepare(). Jeder vorbereitete Anweisung, die zerstört werden müssen, mit einem Aufruf dieser routine, um um Speicherverluste zu vermeiden.
InformationsquelleAutor Noah