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 <axel.spoerl@qt.io>
This commit is contained in:
parent
2b4effeec8
commit
ccf81822cf
@ -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)
|
||||
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';'));
|
||||
}
|
||||
|
||||
static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
|
||||
const QDB2ResultPrivate* 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)
|
||||
|
@ -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));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user