From b6ce91b81c0b197402fd5465cdd720aa9bd5ed1e Mon Sep 17 00:00:00 2001 From: Christian Hohnstaedt Date: Wed, 17 Jan 2024 17:37:50 +0100 Subject: [PATCH] Database schema: use string.replace for TEXT/LONGTEXT Because generally using QString.arg() results in an error for strings without %1 Also use the static database() function instead of creating a temporary instance during close. --- lib/database_model.cpp | 14 +++----------- lib/database_schema.cpp | 2 +- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/lib/database_model.cpp b/lib/database_model.cpp index 6d2dbea9..f1dfeba7 100644 --- a/lib/database_model.cpp +++ b/lib/database_model.cpp @@ -100,7 +100,7 @@ QSqlError database_model::initSqlDB() if (i >= ARRAY_SIZE(schemas)) break; foreach(QString sql, schemas[i]) { - sql = sql.arg(b64_blob); + sql.replace("{B64_BLOB}", b64_blob); qDebug("EXEC[%d]: '%s'", i, CCHAR(sql)); if (!q.exec(sql) || q.lastError().isValid()) { TransRollback(); @@ -333,17 +333,9 @@ void database_model::as_default_database(const QString &db) database_model::~database_model() { QByteArray ba; - QString connName; - bool dbopen; + QString connName = QSqlDatabase::database().connectionName(); - { - /* Destroy "db" at the end of the block */ - QSqlDatabase db = QSqlDatabase::database(); - connName= db.connectionName(); - dbopen = db.isOpen(); - } - - if (!dbopen) { + if (!QSqlDatabase::database().isOpen()) { QSqlDatabase::removeDatabase(connName); Settings.clear(); return; diff --git a/lib/database_schema.cpp b/lib/database_schema.cpp index e93b4c25..db56b5d6 100644 --- a/lib/database_schema.cpp +++ b/lib/database_schema.cpp @@ -8,7 +8,7 @@ * on mysql where LONGTEXT is used. */ -#define B64_BLOB "%1" +#define B64_BLOB "{B64_BLOB}" /* * The B64(DER(something)) function means DER encode something