From 77bf8dc66f6ce3f7fb3780a1144d35bca84d6def Mon Sep 17 00:00:00 2001 From: oberion Date: Tue, 22 Nov 2011 17:42:22 +0100 Subject: [PATCH] Solved bug with QSqlDataBase Before removing a database, has to be sure that the variable associated with the database is out of scope --- .../opmapcontrol/src/core/pureimagecache.cpp | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/libs/opmapcontrol/src/core/pureimagecache.cpp b/src/libs/opmapcontrol/src/core/pureimagecache.cpp index de648fb27..efda41875 100644 --- a/src/libs/opmapcontrol/src/core/pureimagecache.cpp +++ b/src/libs/opmapcontrol/src/core/pureimagecache.cpp @@ -227,23 +227,25 @@ namespace core { #endif //DEBUG_PUREIMAGECACHE QString db=dir+"Data.qmdb"; - QSqlDatabase cn; - - cn = QSqlDatabase::addDatabase("QSQLITE",QString::number(id)); + { + QSqlDatabase cn; + + cn = QSqlDatabase::addDatabase("QSQLITE",QString::number(id)); - cn.setDatabaseName(db); - cn.setConnectOptions("QSQLITE_ENABLE_SHARED_CACHE"); - if(cn.open()) - { - QSqlQuery query(cn); - query.exec(QString("SELECT Tile FROM TilesData WHERE id = (SELECT id FROM Tiles WHERE X=%1 AND Y=%2 AND Zoom=%3 AND Type=%4)").arg(pos.X()).arg(pos.Y()).arg(zoom).arg((int) type)); - query.next(); - if(query.isValid()) + cn.setDatabaseName(db); + cn.setConnectOptions("QSQLITE_ENABLE_SHARED_CACHE"); + if(cn.open()) { - ar=query.value(0).toByteArray(); - } - cn.close(); - } + QSqlQuery query(cn); + query.exec(QString("SELECT Tile FROM TilesData WHERE id = (SELECT id FROM Tiles WHERE X=%1 AND Y=%2 AND Zoom=%3 AND Type=%4)").arg(pos.X()).arg(pos.Y()).arg(zoom).arg((int) type)); + query.next(); + if(query.isValid()) + { + ar=query.value(0).toByteArray(); + } + cn.close(); + } + } QSqlDatabase::removeDatabase(QString::number(id)); lock.unlock(); return ar; -- 2.22.0