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)
|
static QString qDB2Warn(const QDB2ResultPrivate* d, QStringList *errorCodes = nullptr)
|
||||||
{
|
{
|
||||||
int errorCode = 0;
|
int errorCode = 0;
|
||||||
QString error = qWarnDB2Handle(SQL_HANDLE_ENV, d->drv_d_func()->hEnv, &errorCode);
|
QString error = qDB2Warn(d->drv_d_func());
|
||||||
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;
|
|
||||||
}
|
|
||||||
if (!error.isEmpty())
|
if (!error.isEmpty())
|
||||||
error += u' ';
|
error += u' ';
|
||||||
error += qWarnDB2Handle(SQL_HANDLE_STMT, d->hStmt, &errorCode);
|
error += qWarnDB2Handle(SQL_HANDLE_STMT, d->hStmt, &errorCode);
|
||||||
@ -188,34 +177,20 @@ static QString qDB2Warn(const QDB2ResultPrivate* d, QStringList *errorCodes = nu
|
|||||||
return error;
|
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(),
|
qWarning("%s\tError: %s", message.toLocal8Bit().constData(),
|
||||||
qDB2Warn(d).toLocal8Bit().constData());
|
qDB2Warn(d).toLocal8Bit().constData());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void qSqlWarning(const QString& message, const QDB2ResultPrivate* d)
|
template <typename T>
|
||||||
{
|
static QSqlError qMakeError(const QString &err, QSqlError::ErrorType type,
|
||||||
qWarning("%s\tError: %s", message.toLocal8Bit().constData(),
|
const T *p)
|
||||||
qDB2Warn(d).toLocal8Bit().constData());
|
|
||||||
}
|
|
||||||
|
|
||||||
static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
|
|
||||||
const QDB2DriverPrivate* p)
|
|
||||||
{
|
{
|
||||||
QStringList errorCodes;
|
QStringList errorCodes;
|
||||||
const QString error = qDB2Warn(p, &errorCodes);
|
const QString error = qDB2Warn(p, &errorCodes);
|
||||||
return QSqlError(QStringLiteral("QDB2: ") + err, error, type,
|
return QSqlError("QDB2: "_L1 + err, error, type, errorCodes.join(u';'));
|
||||||
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';'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static QMetaType qDecodeDB2Type(SQLSMALLINT sqltype)
|
static QMetaType qDecodeDB2Type(SQLSMALLINT sqltype)
|
||||||
|
@ -329,16 +329,10 @@ static void qSqlWarning(const QString &message, T &&val)
|
|||||||
qCWarning(lcOdbc) << message << "\tError:" << addMsg;
|
qCWarning(lcOdbc) << message << "\tError:" << addMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
static QSqlError qMakeError(const QString &err,
|
static QSqlError qMakeError(const QString &err,
|
||||||
QSqlError::ErrorType type,
|
QSqlError::ErrorType type,
|
||||||
const QODBCResultPrivate *p)
|
const T *p)
|
||||||
{
|
|
||||||
return errorFromDiagRecords(err, type, qODBCWarn(p));
|
|
||||||
}
|
|
||||||
|
|
||||||
static QSqlError qMakeError(const QString &err,
|
|
||||||
QSqlError::ErrorType type,
|
|
||||||
const QODBCDriverPrivate *p)
|
|
||||||
{
|
{
|
||||||
return errorFromDiagRecords(err, type, qODBCWarn(p));
|
return errorFromDiagRecords(err, type, qODBCWarn(p));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user