diff options
Diffstat (limited to 'src/sql/kernel/qsqldriver.cpp')
-rw-r--r-- | src/sql/kernel/qsqldriver.cpp | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp index 997441ab49..c0cb0374a9 100644 --- a/src/sql/kernel/qsqldriver.cpp +++ b/src/sql/kernel/qsqldriver.cpp @@ -7,8 +7,8 @@ #include "qsqlerror.h" #include "qsqlfield.h" #include "qsqlindex.h" -#include "private/qobject_p.h" #include "private/qsqldriver_p.h" +#include "private/qtools_p.h" #include <limits.h> @@ -215,6 +215,7 @@ bool QSqlDriver::isOpenError() const \value SQLite \value Interbase \value DB2 + \value [since 6.6] MimerSQL */ /*! @@ -403,7 +404,6 @@ bool QSqlDriver::isIdentifierEscaped(const QString &identifier, IdentifierType t Reimplement this function if you want to provide your own implementation in your QSqlDriver subclass, - \since 4.5 \sa isIdentifierEscaped() */ QString QSqlDriver::stripDelimiters(const QString &identifier, IdentifierType type) const @@ -446,12 +446,11 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, { const auto tableNameString = tableName.isEmpty() ? QString() : prepareIdentifier(tableName, QSqlDriver::TableName, this); - int i; QString s; s.reserve(128); switch (type) { case SelectStatement: - for (i = 0; i < rec.count(); ++i) { + for (qsizetype i = 0; i < rec.count(); ++i) { if (rec.isGenerated(i)) s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(", "_L1); } @@ -464,7 +463,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, { const QString tableNamePrefix = tableNameString.isEmpty() ? QString() : tableNameString + u'.'; - for (int i = 0; i < rec.count(); ++i) { + for (qsizetype i = 0; i < rec.count(); ++i) { if (!rec.isGenerated(i)) continue; s.append(s.isEmpty() ? "WHERE "_L1 : " AND "_L1); @@ -481,7 +480,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, } case UpdateStatement: s = s + "UPDATE "_L1 + tableNameString + " SET "_L1; - for (i = 0; i < rec.count(); ++i) { + for (qsizetype i = 0; i < rec.count(); ++i) { if (!rec.isGenerated(i)) continue; s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(u'='); @@ -502,7 +501,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, case InsertStatement: { s = s + "INSERT INTO "_L1 + tableNameString + " ("_L1; QString vals; - for (i = 0; i < rec.count(); ++i) { + for (qsizetype i = 0; i < rec.count(); ++i) { if (!rec.isGenerated(i)) continue; s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(", "_L1); @@ -516,7 +515,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, s.clear(); } else { vals.chop(2); // remove trailing comma - s[s.length() - 2] = u')'; + s[s.size() - 2] = u')'; s.append("VALUES ("_L1).append(vals).append(u')'); } break; } @@ -598,7 +597,7 @@ QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const { QString result = field.value().toString(); if (trimStrings) { - int end = result.length(); + int end = result.size(); while (end && result.at(end-1).isSpace()) /* skip white space from end */ end--; result.truncate(end); @@ -613,15 +612,15 @@ QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const break; case QMetaType::QByteArray : { if (hasFeature(BLOB)) { - QByteArray ba = field.value().toByteArray(); - QString res; - static const char hexchars[] = "0123456789abcdef"; - for (int i = 0; i < ba.size(); ++i) { - uchar s = (uchar) ba[i]; - res += QLatin1Char(hexchars[s >> 4]); - res += QLatin1Char(hexchars[s & 0x0f]); + const QByteArray ba = field.value().toByteArray(); + r.reserve((ba.size() + 1) * 2); + r += u'\''; + for (const char c : ba) { + const uchar s = uchar(c); + r += QLatin1Char(QtMiscUtils::toHexLower(s >> 4)); + r += QLatin1Char(QtMiscUtils::toHexLower(s & 0x0f)); } - r = u'\'' + res + u'\''; + r += u'\''; break; } } @@ -680,7 +679,6 @@ QVariant QSqlDriver::handle() const Reimplement this function if you want to provide event notification support in your own QSqlDriver subclass, - \since 4.4 \sa unsubscribeFromNotification(), subscribedToNotifications(), QSqlDriver::hasFeature() */ bool QSqlDriver::subscribeToNotification(const QString &name) @@ -704,7 +702,6 @@ bool QSqlDriver::subscribeToNotification(const QString &name) Reimplement this function if you want to provide event notification support in your own QSqlDriver subclass, - \since 4.4 \sa subscribeToNotification(), subscribedToNotifications() */ bool QSqlDriver::unsubscribeFromNotification(const QString &name) @@ -719,7 +716,6 @@ bool QSqlDriver::unsubscribeFromNotification(const QString &name) Reimplement this function if you want to provide event notification support in your own QSqlDriver subclass, - \since 4.4 \sa subscribeToNotification(), unsubscribeFromNotification() */ QStringList QSqlDriver::subscribedToNotifications() const @@ -728,16 +724,7 @@ QStringList QSqlDriver::subscribedToNotifications() const } /*! - \since 4.6 - - Sets the default numerical precision policy used by queries created - by this driver to \a precisionPolicy. - - Note: Setting the default precision policy to \a precisionPolicy - doesn't affect any currently active queries. - - \sa QSql::NumericalPrecisionPolicy, numericalPrecisionPolicy(), - QSqlQuery::setNumericalPrecisionPolicy(), QSqlQuery::numericalPrecisionPolicy() + Sets \l numericalPrecisionPolicy to \a precisionPolicy. */ void QSqlDriver::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy) { @@ -746,12 +733,17 @@ void QSqlDriver::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy prec } /*! - \since 4.6 + \property QSqlDriver::numericalPrecisionPolicy + \since 6.8 - Returns the current default precision policy for the database connection. + This property holds the precision policy for the database connection. + \note Setting the precision policy doesn't affect any currently active queries. - \sa QSql::NumericalPrecisionPolicy, setNumericalPrecisionPolicy(), - QSqlQuery::numericalPrecisionPolicy(), QSqlQuery::setNumericalPrecisionPolicy() + \sa QSql::NumericalPrecisionPolicy, QSqlQuery::numericalPrecisionPolicy, + QSqlDatabase::numericalPrecisionPolicy +*/ +/*! + Returns the \l numericalPrecisionPolicy. */ QSql::NumericalPrecisionPolicy QSqlDriver::numericalPrecisionPolicy() const { |