44
44
#include " qgsreferencedgeometry.h"
45
45
#include " qgs3drendererregistry.h"
46
46
#include " qgslayoutcontext.h"
47
+ #include " qgssqliteutils.h"
47
48
48
49
#include " gps/qgsgpsconnectionregistry.h"
49
50
#include " processing/qgsprocessingregistry.h"
@@ -1432,8 +1433,8 @@ bool QgsApplication::createDatabase( QString *errorMessage )
1432
1433
else
1433
1434
{
1434
1435
// migrate if necessary
1435
- sqlite3 *db = nullptr ;
1436
- if ( sqlite3_open ( QgsApplication::qgisUserDatabaseFilePath (). toUtf8 (). constData (), &db ) != SQLITE_OK )
1436
+ sqlite3_database_unique_ptr database ;
1437
+ if ( database. open ( QgsApplication::qgisUserDatabaseFilePath () ) != SQLITE_OK )
1437
1438
{
1438
1439
if ( errorMessage )
1439
1440
{
@@ -1443,11 +1444,11 @@ bool QgsApplication::createDatabase( QString *errorMessage )
1443
1444
}
1444
1445
1445
1446
char *errmsg = nullptr ;
1446
- int res = sqlite3_exec ( db , " SELECT epsg FROM tbl_srs LIMIT 0" , nullptr , nullptr , &errmsg );
1447
+ int res = sqlite3_exec ( database. get () , " SELECT epsg FROM tbl_srs LIMIT 0" , nullptr , nullptr , &errmsg );
1447
1448
if ( res == SQLITE_OK )
1448
1449
{
1449
1450
// epsg column exists => need migration
1450
- if ( sqlite3_exec ( db ,
1451
+ if ( sqlite3_exec ( database. get () ,
1451
1452
" ALTER TABLE tbl_srs RENAME TO tbl_srs_bak;"
1452
1453
" CREATE TABLE tbl_srs ("
1453
1454
" srs_id INTEGER PRIMARY KEY,"
@@ -1470,7 +1471,6 @@ bool QgsApplication::createDatabase( QString *errorMessage )
1470
1471
*errorMessage = tr ( " Migration of private qgis.db failed.\n %1" ).arg ( QString::fromUtf8 ( errmsg ) );
1471
1472
}
1472
1473
sqlite3_free ( errmsg );
1473
- sqlite3_close ( db );
1474
1474
return false ;
1475
1475
}
1476
1476
}
@@ -1479,12 +1479,12 @@ bool QgsApplication::createDatabase( QString *errorMessage )
1479
1479
sqlite3_free ( errmsg );
1480
1480
}
1481
1481
1482
- if ( sqlite3_exec ( db , " DROP VIEW vw_srs" , nullptr , nullptr , &errmsg ) != SQLITE_OK )
1482
+ if ( sqlite3_exec ( database. get () , " DROP VIEW vw_srs" , nullptr , nullptr , &errmsg ) != SQLITE_OK )
1483
1483
{
1484
1484
QgsDebugMsg ( QString ( " vw_srs didn't exists in private qgis.db: %1" ).arg ( errmsg ) );
1485
1485
}
1486
1486
1487
- if ( sqlite3_exec ( db ,
1487
+ if ( sqlite3_exec ( database. get () ,
1488
1488
" CREATE VIEW vw_srs AS"
1489
1489
" SELECT"
1490
1490
" a.description AS description"
@@ -1505,11 +1505,8 @@ bool QgsApplication::createDatabase( QString *errorMessage )
1505
1505
*errorMessage = tr ( " Update of view in private qgis.db failed.\n %1" ).arg ( QString::fromUtf8 ( errmsg ) );
1506
1506
}
1507
1507
sqlite3_free ( errmsg );
1508
- sqlite3_close ( db );
1509
1508
return false ;
1510
1509
}
1511
-
1512
- sqlite3_close ( db );
1513
1510
}
1514
1511
return true ;
1515
1512
}
0 commit comments