summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Ehrlicher <[email protected]>2025-06-06 20:21:05 +0200
committerChristian Ehrlicher <[email protected]>2025-06-09 12:41:19 +0200
commitccf81822cffd099a7df68684a1738c804573e630 (patch)
tree6ae4ae2043190226f924b93dfef71a5c7f0166b9
parent2b4effeec8e3c347e1bab01f3635fb6c71a7521d (diff)
SQL/DB2 & ODBC: avoid some code duplication
Avoid some code duplication by using a template parameter for qMakeError() and qSqlWarning(). Pick-to: 6.10 Change-Id: I698ab063fce6c7be1cb3debdb9e83978eac10409 Reviewed-by: Axel Spoerl <[email protected]>
-rw-r--r--src/plugins/sqldrivers/db2/qsql_db2.cpp39
-rw-r--r--src/plugins/sqldrivers/odbc/qsql_odbc.cpp10
2 files changed, 9 insertions, 40 deletions
diff --git a/src/plugins/sqldrivers/db2/qsql_db2.cpp b/src/plugins/sqldrivers/db2/qsql_db2.cpp
index 9b6a06c378f..5e631cab2a3 100644
--- a/src/plugins/sqldrivers/db2/qsql_db2.cpp
+++ b/src/plugins/sqldrivers/db2/qsql_db2.cpp
@@ -168,18 +168,7 @@ static QString qDB2Warn(const QDB2DriverPrivate* d, QStringList *errorCodes = nu
static QString qDB2Warn(const QDB2ResultPrivate* d, QStringList *errorCodes = nullptr)
{
int errorCode = 0;
- QString error = qWarnDB2Handle(SQL_HANDLE_ENV, d->drv_d_func()->hEnv, &errorCode);
- if (errorCodes && errorCode != 0) {
- *errorCodes << QString::number(errorCode);
- errorCode = 0;
- }
- if (!error.isEmpty())
- error += u' ';
- error += qWarnDB2Handle(SQL_HANDLE_DBC, d->drv_d_func()->hDbc, &errorCode);
- if (errorCodes && errorCode != 0) {
- *errorCodes << QString::number(errorCode);
- errorCode = 0;
- }
+ QString error = qDB2Warn(d->drv_d_func());
if (!error.isEmpty())
error += u' ';
error += qWarnDB2Handle(SQL_HANDLE_STMT, d->hStmt, &errorCode);
@@ -188,34 +177,20 @@ static QString qDB2Warn(const QDB2ResultPrivate* d, QStringList *errorCodes = nu
return error;
}
-static void qSqlWarning(const QString& message, const QDB2DriverPrivate* d)
+template <typename T>
+static void qSqlWarning(const QString &message, const T *d)
{
qWarning("%s\tError: %s", message.toLocal8Bit().constData(),
qDB2Warn(d).toLocal8Bit().constData());
}
-static void qSqlWarning(const QString& message, const QDB2ResultPrivate* d)
-{
- qWarning("%s\tError: %s", message.toLocal8Bit().constData(),
- qDB2Warn(d).toLocal8Bit().constData());
-}
-
-static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
- const QDB2DriverPrivate* p)
-{
- QStringList errorCodes;
- const QString error = qDB2Warn(p, &errorCodes);
- return QSqlError(QStringLiteral("QDB2: ") + err, error, type,
- errorCodes.join(u';'));
-}
-
-static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
- const QDB2ResultPrivate* p)
+template <typename T>
+static QSqlError qMakeError(const QString &err, QSqlError::ErrorType type,
+ const T *p)
{
QStringList errorCodes;
const QString error = qDB2Warn(p, &errorCodes);
- return QSqlError(QStringLiteral("QDB2: ") + err, error, type,
- errorCodes.join(u';'));
+ return QSqlError("QDB2: "_L1 + err, error, type, errorCodes.join(u';'));
}
static QMetaType qDecodeDB2Type(SQLSMALLINT sqltype)
diff --git a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
index e09e65f223a..18289f93b54 100644
--- a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
+++ b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
@@ -329,16 +329,10 @@ static void qSqlWarning(const QString &message, T &&val)
qCWarning(lcOdbc) << message << "\tError:" << addMsg;
}
+template <typename T>
static QSqlError qMakeError(const QString &err,
QSqlError::ErrorType type,
- const QODBCResultPrivate *p)
-{
- return errorFromDiagRecords(err, type, qODBCWarn(p));
-}
-
-static QSqlError qMakeError(const QString &err,
- QSqlError::ErrorType type,
- const QODBCDriverPrivate *p)
+ const T *p)
{
return errorFromDiagRecords(err, type, qODBCWarn(p));
}