diff options
Diffstat (limited to 'src/plugins/sqldrivers/mimer/qsql_mimer.cpp')
-rw-r--r-- | src/plugins/sqldrivers/mimer/qsql_mimer.cpp | 238 |
1 files changed, 98 insertions, 140 deletions
diff --git a/src/plugins/sqldrivers/mimer/qsql_mimer.cpp b/src/plugins/sqldrivers/mimer/qsql_mimer.cpp index 3037f10473..7f89e0a0d5 100644 --- a/src/plugins/sqldrivers/mimer/qsql_mimer.cpp +++ b/src/plugins/sqldrivers/mimer/qsql_mimer.cpp @@ -5,6 +5,7 @@ #include <qvariant.h> #include <qmetatype.h> #include <qdatetime.h> +#include <qloggingcategory.h> #include <qsqlerror.h> #include <qsqlfield.h> #include <qsqlindex.h> @@ -30,12 +31,15 @@ Q_DECLARE_METATYPE(MimerStatement) QT_BEGIN_NAMESPACE +static Q_LOGGING_CATEGORY(lcMimer, "qt.sql.mimer") + enum class MimerColumnTypes { Binary, Clob, Blob, String, Int, + Numeric, Long, Float, Double, @@ -157,6 +161,20 @@ static QSqlError qMakeError(const QString &err, const int errCode, QSqlError::Er return QSqlError("QMIMER: "_L1 + err, msg, type, QString::number(errCode)); } +static QString msgCouldNotGet(const char *type, int column) +{ + //: Data type, column + return QCoreApplication::translate("QMimerSQLResult", + "Could not get %1, column %2").arg(QLatin1StringView(type)).arg(column); +} + +static QString msgCouldNotSet(const char *type, int column) +{ + //: Data type, parameter + return QCoreApplication::translate("QMimerSQLResult", + "Could not set %1, parameter %2").arg(QLatin1StringView(type)).arg(column); +} + QMimerSQLDriver::QMimerSQLDriver(QObject *parent) : QSqlDriver(*new QMimerSQLDriverPrivate, parent) { } @@ -207,7 +225,6 @@ static MimerColumnTypes mimerMapColumnTypes(int32_t t) case MIMER_TIMESTAMP: return MimerColumnTypes::Timestamp; case MIMER_INTERVAL_DAY: - case MIMER_DECIMAL: case MIMER_INTERVAL_DAY_TO_HOUR: case MIMER_INTERVAL_DAY_TO_MINUTE: case MIMER_INTERVAL_DAY_TO_SECOND: @@ -227,6 +244,10 @@ static MimerColumnTypes mimerMapColumnTypes(int32_t t) case MIMER_UTF8: case MIMER_DEFAULT_DATATYPE: return MimerColumnTypes::String; + case MIMER_INTEGER: + case MIMER_DECIMAL: + case MIMER_FLOAT: + return MimerColumnTypes::Numeric; case MIMER_BOOLEAN: return MimerColumnTypes::Boolean; case MIMER_T_BIGINT: @@ -234,19 +255,17 @@ static MimerColumnTypes mimerMapColumnTypes(int32_t t) case MIMER_NATIVE_BIGINT_NULLABLE: case MIMER_NATIVE_BIGINT: return MimerColumnTypes::Long; - case MIMER_T_FLOAT: - case MIMER_FLOAT: - return MimerColumnTypes::Float; case MIMER_NATIVE_REAL_NULLABLE: case MIMER_NATIVE_REAL: case MIMER_T_REAL: + return MimerColumnTypes::Float; + case MIMER_T_FLOAT: case MIMER_NATIVE_DOUBLE_NULLABLE: case MIMER_NATIVE_DOUBLE: case MIMER_T_DOUBLE: return MimerColumnTypes::Double; case MIMER_NATIVE_INTEGER: case MIMER_NATIVE_INTEGER_NULLABLE: - case MIMER_INTEGER: case MIMER_NATIVE_SMALLINT_NULLABLE: case MIMER_NATIVE_SMALLINT: case MIMER_T_INTEGER: @@ -255,7 +274,7 @@ static MimerColumnTypes mimerMapColumnTypes(int32_t t) case MIMER_UUID: return MimerColumnTypes::Uuid; default: - qWarning() << "QMimerSQLDriver::mimerMapColumnTypes: Unknown data type: " << t; + qCWarning(lcMimer) << "QMimerSQLDriver::mimerMapColumnTypes: Unknown data type:" << t; } return MimerColumnTypes::Unknown; } @@ -292,6 +311,8 @@ static QMetaType::Type qDecodeMSQLType(int32_t t) case MIMER_NCHAR_VARYING: case MIMER_UTF8: case MIMER_DEFAULT_DATATYPE: + case MIMER_INTEGER: + case MIMER_FLOAT: return QMetaType::QString; case MIMER_BOOLEAN: return QMetaType::Bool; @@ -300,19 +321,18 @@ static QMetaType::Type qDecodeMSQLType(int32_t t) case MIMER_NATIVE_BIGINT_NULLABLE: case MIMER_NATIVE_BIGINT: return QMetaType::LongLong; - case MIMER_T_FLOAT: - case MIMER_FLOAT: - return QMetaType::Float; case MIMER_NATIVE_REAL_NULLABLE: case MIMER_NATIVE_REAL: case MIMER_T_REAL: + return QMetaType::Float; + case MIMER_T_FLOAT: case MIMER_NATIVE_DOUBLE_NULLABLE: case MIMER_NATIVE_DOUBLE: case MIMER_T_DOUBLE: return QMetaType::Double; case MIMER_NATIVE_INTEGER_NULLABLE: case MIMER_T_INTEGER: - case MIMER_INTEGER: + case MIMER_NATIVE_INTEGER: return QMetaType::Int; case MIMER_NATIVE_SMALLINT_NULLABLE: case MIMER_T_SMALLINT: @@ -327,7 +347,7 @@ static QMetaType::Type qDecodeMSQLType(int32_t t) case MIMER_UUID: return QMetaType::QUuid; default: - qWarning() << "QMimerSQLDriver::qDecodeMSQLType: Unknown data type: " << t; + qCWarning(lcMimer) << "QMimerSQLDriver::qDecodeMSQLType: Unknown data type:" << t; return QMetaType::UnknownType; } } @@ -393,7 +413,7 @@ static int32_t qLookupMimDataType(QStringView s) if (s == u"DOUBLE PRECISION") return MIMER_T_DOUBLE; if (s == u"INTEGER") - return MIMER_INTEGER; + return MIMER_T_INTEGER; if (s == u"SMALLINT") return MIMER_T_SMALLINT; if (s == u"DATE") @@ -406,7 +426,7 @@ static int32_t qLookupMimDataType(QStringView s) return MIMER_UUID; if (s == u"USER-DEFINED") return MIMER_DEFAULT_DATATYPE; - qWarning() << "QMimerSQLDriver::qLookupMimDataType: Unhandled data type: " << s; + qCWarning(lcMimer) << "QMimerSQLDriver::qLookupMimDataType: Unhandled data type:" << s; return MIMER_DEFAULT_DATATYPE; } @@ -590,7 +610,7 @@ QVariant QMimerSQLResult::data(int i) genericError, QSqlError::StatementError, nullptr)); return QVariant(); } - mType = MimerParameterType(d->statementhandle, static_cast<std::int16_t>(i) + 1); + mType = MimerParameterType(d->statementhandle, static_cast<std::int16_t>(i + 1)); } else { if (i >= MimerColumnCount(d->statementhandle)) { setLastError(qMakeError( @@ -599,23 +619,21 @@ QVariant QMimerSQLResult::data(int i) genericError, QSqlError::StatementError, nullptr)); return QVariant(); } - mType = MimerColumnType(d->statementhandle, static_cast<std::int16_t>(i) + 1); + mType = MimerColumnType(d->statementhandle, static_cast<std::int16_t>(i + 1)); } const QMetaType::Type type = qDecodeMSQLType(mType); const MimerColumnTypes mimDataType = mimerMapColumnTypes(mType); - err = MimerIsNull(d->statementhandle, static_cast<std::int16_t>(i) + 1); + err = MimerIsNull(d->statementhandle, static_cast<std::int16_t>(i + 1)); if (err > 0) { return QVariant(QMetaType(type), nullptr); } else { switch (mimDataType) { case MimerColumnTypes::Date: { wchar_t dateString_w[maxDateStringSize + 1]; - err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1, dateString_w, + err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1), dateString_w, sizeof(dateString_w) / sizeof(dateString_w[0])); if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not get date, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("date", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } @@ -623,12 +641,10 @@ QVariant QMimerSQLResult::data(int i) } case MimerColumnTypes::Time: { wchar_t timeString_w[maxTimeStringSize + 1]; - err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1, timeString_w, + err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1), timeString_w, sizeof(timeString_w) / sizeof(timeString_w[0])); if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not get time, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("time", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } @@ -642,14 +658,12 @@ QVariant QMimerSQLResult::data(int i) } case MimerColumnTypes::Timestamp: { wchar_t dateTimeString_w[maxTimestampStringSize + 1]; - err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1, + err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1), dateTimeString_w, sizeof(dateTimeString_w) / sizeof(dateTimeString_w[0])); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not get date time, column %1") - .arg(i), + qMakeError(msgCouldNotGet("date time", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } @@ -663,11 +677,9 @@ QVariant QMimerSQLResult::data(int i) } case MimerColumnTypes::Int: { int resInt; - err = MimerGetInt32(d->statementhandle, static_cast<std::int16_t>(i) + 1, &resInt); + err = MimerGetInt32(d->statementhandle, static_cast<std::int16_t>(i + 1), &resInt); if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError(QCoreApplication::translate( - "QMimerSQLResult", "Could not get int32, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("int32", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } @@ -675,23 +687,19 @@ QVariant QMimerSQLResult::data(int i) } case MimerColumnTypes::Long: { int64_t resLongLong; - err = MimerGetInt64(d->statementhandle, static_cast<std::int16_t>(i) + 1, &resLongLong); + err = MimerGetInt64(d->statementhandle, static_cast<std::int16_t>(i + 1), &resLongLong); if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError(QCoreApplication::translate( - "QMimerSQLResult", "Could not get int64, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("int64", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } - return QString::number(resLongLong).toLongLong(); + return (qlonglong)resLongLong; } case MimerColumnTypes::Boolean: { - err = MimerGetBoolean(d->statementhandle, static_cast<std::int16_t>(i) + 1); + err = MimerGetBoolean(d->statementhandle, static_cast<std::int16_t>(i + 1)); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not get boolean, column %1") - .arg(i), + qMakeError(msgCouldNotGet("boolean", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } @@ -699,11 +707,9 @@ QVariant QMimerSQLResult::data(int i) } case MimerColumnTypes::Float: { float resFloat; - err = MimerGetFloat(d->statementhandle, static_cast<std::int16_t>(i) + 1, &resFloat); + err = MimerGetFloat(d->statementhandle, static_cast<std::int16_t>(i + 1), &resFloat); if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError(QCoreApplication::translate( - "QMimerSQLResult", "Could not get float, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("float", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } @@ -711,12 +717,10 @@ QVariant QMimerSQLResult::data(int i) } case MimerColumnTypes::Double: { double resDouble; - err = MimerGetDouble(d->statementhandle, static_cast<std::int16_t>(i) + 1, &resDouble); + err = MimerGetDouble(d->statementhandle, static_cast<std::int16_t>(i + 1), &resDouble); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not get double, column %1") - .arg(i), + qMakeError(msgCouldNotGet("double", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } @@ -726,7 +730,7 @@ QVariant QMimerSQLResult::data(int i) case QSql::LowPrecisionInt64: return static_cast<qint64>(resDouble); case QSql::LowPrecisionDouble: - return resDouble; + return static_cast<qreal>(resDouble); case QSql::HighPrecision: return QString::number(resDouble, 'g', 17); } @@ -735,17 +739,15 @@ QVariant QMimerSQLResult::data(int i) case MimerColumnTypes::Binary: { QByteArray byteArray; // Get size - err = MimerGetBinary(d->statementhandle, static_cast<std::int16_t>(i) + 1, NULL, 0); + err = MimerGetBinary(d->statementhandle, static_cast<std::int16_t>(i + 1), NULL, 0); if (MIMER_SUCCEEDED(err)) { byteArray.resize(err); - err = MimerGetBinary(d->statementhandle, static_cast<std::int16_t>(i) + 1, + err = MimerGetBinary(d->statementhandle, static_cast<std::int16_t>(i + 1), byteArray.data(), err); } if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not get binary, column %1") - .arg(i), + qMakeError(msgCouldNotGet("binary", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } @@ -754,7 +756,7 @@ QVariant QMimerSQLResult::data(int i) case MimerColumnTypes::Blob: { QByteArray byteArray; size_t size; - err = MimerGetLob(d->statementhandle, static_cast<std::int16_t>(i) + 1, &size, + err = MimerGetLob(d->statementhandle, static_cast<std::int16_t>(i + 1), &size, &d->lobhandle); if (MIMER_SUCCEEDED(err)) { constexpr size_t maxSize = lobChunkMaxSizeFetch; @@ -768,53 +770,48 @@ QVariant QMimerSQLResult::data(int i) byteArray.append(QByteArray::fromRawData(blobchar.data(), bytesToReceive)); left_to_return -= bytesToReceive; if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError( - QCoreApplication::translate("QMimerSQLResult", - "Could not get blob, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("BLOB", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } } } else { - setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not get blob, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("BLOB", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } return byteArray; } + case MimerColumnTypes::Numeric: case MimerColumnTypes::String: { wchar_t resString_w[maxStackStringSize + 1]; // Get size - err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1, resString_w, + err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1), resString_w, 0); if (MIMER_SUCCEEDED(err)) { int size = err; if (err <= maxStackStringSize) { // For smaller strings, use a small buffer for // efficiency - err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1, + err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1), resString_w, maxStackStringSize + 1); if (MIMER_SUCCEEDED(err)) return QString::fromWCharArray(resString_w); } else { // For larger strings, dynamically allocate memory QVarLengthArray<wchar_t> largeResString_w(size + 1); - err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1, + err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1), largeResString_w.data(), size + 1); if (MIMER_SUCCEEDED(err)) return QString::fromWCharArray(largeResString_w.data()); } } - setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not get string, column %1") - .arg(i), - err, QSqlError::StatementError, d->drv_d_func())); + setLastError(qMakeError(msgCouldNotGet( + mimDataType == MimerColumnTypes::Numeric ? "numeric" : "string", i), + err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } case MimerColumnTypes::Clob: { size_t size; - err = MimerGetLob(d->statementhandle, static_cast<std::int16_t>(i) + 1, &size, + err = MimerGetLob(d->statementhandle, static_cast<std::int16_t>(i + 1), &size, &d->lobhandle); if (MIMER_SUCCEEDED(err)) { constexpr size_t maxSize = lobChunkMaxSizeFetch; @@ -829,29 +826,22 @@ QVariant QMimerSQLResult::data(int i) returnString.append(QString::fromWCharArray(clobstring_w.data())); left_to_return -= bytesToReceive; if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError( - QCoreApplication::translate("QMimerSQLResult", - "Could not get clob, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("CLOB", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } } return returnString; } - setLastError(qMakeError( - QCoreApplication::translate("QMimerSQLResult", "Could not get clob, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("CLOB", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } case MimerColumnTypes::Uuid: { unsigned char uuidChar[16]; - err = MimerGetUUID(d->statementhandle, static_cast<std::int16_t>(i) + 1, uuidChar); + err = MimerGetUUID(d->statementhandle, static_cast<std::int16_t>(i + 1), uuidChar); if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not get uuid, column %1") - .arg(i), + setLastError(qMakeError(msgCouldNotGet("UUID", i), err, QSqlError::StatementError, d->drv_d_func())); return QVariant(QMetaType(type), nullptr); } @@ -871,7 +861,7 @@ QVariant QMimerSQLResult::data(int i) bool QMimerSQLResult::isNull(int index) { Q_D(const QMimerSQLResult); - const int32_t rc = MimerIsNull(d->statementhandle, static_cast<std::int16_t>(index) + 1); + const int32_t rc = MimerIsNull(d->statementhandle, static_cast<std::int16_t>(index + 1)); if (!MIMER_SUCCEEDED(rc)) { setLastError(qMakeError( QCoreApplication::translate("QMimerSQLResult", "Could not check null, column %1") @@ -924,12 +914,11 @@ QSqlRecord QMimerSQLResult::record() const const int colSize = MimerColumnCount(d->statementhandle); for (int i = 0; i < colSize; i++) { wchar_t colName_w[100]; - MimerColumnName(d->statementhandle, static_cast<std::int16_t>(i) + 1, colName_w, + MimerColumnName(d->statementhandle, static_cast<std::int16_t>(i + 1), colName_w, sizeof(colName_w) / sizeof(colName_w[0])); field.setName(QString::fromWCharArray(colName_w)); - const int32_t mType = MimerColumnType(d->statementhandle, static_cast<std::int16_t>(i) + 1); + const int32_t mType = MimerColumnType(d->statementhandle, static_cast<std::int16_t>(i + 1)); const QMetaType::Type type = qDecodeMSQLType(mType); - field.setSqlType(mType); field.setMetaType(QMetaType(type)); field.setValue(QVariant(field.metaType())); // field.setPrecision(); Should be implemented once the Mimer API can give this @@ -1014,9 +1003,7 @@ bool QMimerSQLResult::exec() err = MimerSetNull(d->statementhandle, i + 1); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set null, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("null", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1031,9 +1018,7 @@ bool QMimerSQLResult::exec() err = MimerSetInt32(d->statementhandle, i + 1, val.toInt(&convertOk)); if (!convertOk || !MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set int32, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("int32", i), convertOk ? err : genericError, QSqlError::StatementError, convertOk ? d->drv_d_func() : nullptr)); return false; @@ -1045,9 +1030,7 @@ bool QMimerSQLResult::exec() err = MimerSetInt64(d->statementhandle, i + 1, val.toLongLong(&convertOk)); if (!convertOk || !MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set int64, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("int64", i), convertOk ? err : genericError, QSqlError::StatementError, convertOk ? d->drv_d_func() : nullptr)); return false; @@ -1059,9 +1042,7 @@ bool QMimerSQLResult::exec() err = MimerSetFloat(d->statementhandle, i + 1, val.toFloat(&convertOk)); if (!convertOk || !MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set float, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("float", i), convertOk ? err : genericError, QSqlError::StatementError, convertOk ? d->drv_d_func() : nullptr)); return false; @@ -1073,9 +1054,7 @@ bool QMimerSQLResult::exec() err = MimerSetDouble(d->statementhandle, i + 1, val.toDouble(&convertOk)); if (!convertOk || !MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set double, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("double", i), convertOk ? err : genericError, QSqlError::StatementError, convertOk ? d->drv_d_func() : nullptr)); return false; @@ -1088,9 +1067,7 @@ bool QMimerSQLResult::exec() err = MimerSetBinary(d->statementhandle, i + 1, binArr.data(), size); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set binary, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("binary", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1100,9 +1077,7 @@ bool QMimerSQLResult::exec() err = MimerSetBoolean(d->statementhandle, i + 1, val.toBool() == true ? 1 : 0); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate( - "QMimerSQLResult", "Could not set boolean, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("boolean", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1116,24 +1091,22 @@ bool QMimerSQLResult::exec() err = MimerSetUUID(d->statementhandle, i + 1, uuid); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set UUID, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("UUID", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } break; } + case MimerColumnTypes::Numeric: case MimerColumnTypes::String: { QByteArray string_b = val.toString().trimmed().toUtf8(); const char *string_u = string_b.constData(); err = MimerSetString8(d->statementhandle, i + 1, string_u); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set string, parameter %1") - .arg(i), - err, QSqlError::StatementError, d->drv_d_func())); + qMakeError(msgCouldNotSet( + mimDataType == MimerColumnTypes::Numeric ? "numeric" : "string", i), + err, QSqlError::StatementError, d->drv_d_func())); return false; } break; @@ -1142,9 +1115,7 @@ bool QMimerSQLResult::exec() err = MimerSetString8(d->statementhandle, i + 1, val.toString().toUtf8().constData()); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set date, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("date", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1159,9 +1130,7 @@ bool QMimerSQLResult::exec() timeVal.toString(timeFormatString).toUtf8().constData()); if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set time, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("time", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1176,10 +1145,7 @@ bool QMimerSQLResult::exec() d->statementhandle, i + 1, val.toDateTime().toString(dateTimeFormatString).toUtf8().constData()); if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError( - QCoreApplication::translate("QMimerSQLResult", - "Could not set datetime, parameter %1") - .arg(i), + setLastError(qMakeError(msgCouldNotSet("datetime", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1206,10 +1172,7 @@ bool QMimerSQLResult::exec() } if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate( - "QMimerSQLResult", - "Could not set BLOB byte array, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("BLOB byte array", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1218,10 +1181,7 @@ bool QMimerSQLResult::exec() } } if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError( - QCoreApplication::translate("QMimerSQLResult", - "Could not set BLOB byte array, parameter %1") - .arg(i), + setLastError(qMakeError(msgCouldNotSet("BLOB byte array", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1258,10 +1218,7 @@ bool QMimerSQLResult::exec() pos += maxSize - step_back; } if (!MIMER_SUCCEEDED(err)) { - setLastError(qMakeError( - QCoreApplication::translate("QMimerSQLResult", - "Could not set CLOB, parameter %1") - .arg(i), + setLastError(qMakeError(msgCouldNotSet("CLOB", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1272,9 +1229,7 @@ bool QMimerSQLResult::exec() } if (!MIMER_SUCCEEDED(err)) { setLastError( - qMakeError(QCoreApplication::translate("QMimerSQLResult", - "Could not set CLOB, parameter %1") - .arg(i), + qMakeError(msgCouldNotSet("CLOB", i), err, QSqlError::StatementError, d->drv_d_func())); return false; } @@ -1335,7 +1290,7 @@ bool QMimerSQLResult::execBatch(bool arrayBind) if (bindValueType(i) == QSql::Out || bindValueType(i) == QSql::InOut) { setLastError(qMakeError(QCoreApplication::translate( "QMimerSQLResult", - "Only input parameter can be used in batch operations"), + "Only input parameters can be used in batch operations"), genericError, QSqlError::StatementError, nullptr)); d->execBatch = false; return false; @@ -1349,6 +1304,7 @@ bool QMimerSQLResult::execBatch(bool arrayBind) err = MimerAddBatch(d->statementhandle); if (!MIMER_SUCCEEDED(err)) { setLastError(qMakeError( + //: %1 is the batch number QCoreApplication::translate("QMimerSQLResult", "Could not add batch %1") .arg(i), err, QSqlError::StatementError, d->drv_d_func())); @@ -1650,3 +1606,5 @@ void QMimerSQLDriverPrivate::splitTableQualifier(const QString &qualifiedName, Q } QT_END_NAMESPACE + +#include "moc_qsql_mimer.cpp" |