diff options
author | Christian Ehrlicher <[email protected]> | 2025-06-06 20:21:05 +0200 |
---|---|---|
committer | Christian Ehrlicher <[email protected]> | 2025-06-09 12:41:19 +0200 |
commit | ccf81822cffd099a7df68684a1738c804573e630 (patch) | |
tree | 6ae4ae2043190226f924b93dfef71a5c7f0166b9 | |
parent | 2b4effeec8e3c347e1bab01f3635fb6c71a7521d (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.cpp | 39 | ||||
-rw-r--r-- | src/plugins/sqldrivers/odbc/qsql_odbc.cpp | 10 |
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)); } |