Sql: use _L1 for for creating Latin-1 string literals

Task-number: QTBUG-98434
Change-Id: Ie12ca82fd912617eabe4f602c08914f12878cb32
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
bb10
Sona Kurazyan 2022-04-14 13:21:36 +02:00
parent 917b4d3802
commit 128785d0fa
22 changed files with 356 additions and 327 deletions

View File

@ -43,6 +43,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
class QDB2DriverPlugin : public QSqlDriverPlugin
{
Q_OBJECT
@ -61,7 +63,7 @@ QDB2DriverPlugin::QDB2DriverPlugin()
QSqlDriver* QDB2DriverPlugin::create(const QString &name)
{
if (name == QLatin1String("QDB2")) {
if (name == "QDB2"_L1) {
QDB2Driver* driver = new QDB2Driver();
return driver;
}

View File

@ -65,6 +65,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
static const int COLNAMESIZE = 255;
// Based on what is mentioned in the documentation here:
// https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/sqlref/src/tpc/db2z_limits.html
@ -554,13 +556,13 @@ static bool qMakeStatement(QDB2ResultPrivate* d, bool forwardOnly, bool setForwa
d->drv_d_func()->hDbc,
&d->hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QDB2Result::reset: Unable to allocate statement handle"), d);
qSqlWarning("QDB2Result::reset: Unable to allocate statement handle"_L1, d);
return false;
}
} else {
r = SQLFreeStmt(d->hStmt, SQL_CLOSE);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QDB2Result::reset: Unable to close statement handle"), d);
qSqlWarning("QDB2Result::reset: Unable to close statement handle"_L1, d);
return false;
}
}
@ -581,8 +583,8 @@ static bool qMakeStatement(QDB2ResultPrivate* d, bool forwardOnly, bool setForwa
}
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
qSqlWarning(QString::fromLatin1("QDB2Result::reset: Unable to set %1 attribute.").arg(
forwardOnly ? QLatin1String("SQL_CURSOR_FORWARD_ONLY")
: QLatin1String("SQL_CURSOR_STATIC")), d);
forwardOnly ? "SQL_CURSOR_FORWARD_ONLY"_L1
: "SQL_CURSOR_STATIC"_L1), d);
return false;
}
return true;
@ -607,8 +609,7 @@ QDB2Result::~QDB2Result()
if (d->hStmt) {
SQLRETURN r = SQLFreeHandle(SQL_HANDLE_STMT, d->hStmt);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QDB2Driver: Unable to free statement handle ")
+ QString::number(r), d);
qSqlWarning("QDB2Driver: Unable to free statement handle "_L1 + QString::number(r), d);
}
}
@ -1159,7 +1160,7 @@ int QDB2Result::numRowsAffected()
if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO)
return affectedRowCount;
else
qSqlWarning(QLatin1String("QDB2Result::numRowsAffected: Unable to count affected rows"), d);
qSqlWarning("QDB2Result::numRowsAffected: Unable to count affected rows"_L1, d);
return -1;
}
@ -1254,7 +1255,7 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
SQL_NULL_HANDLE,
&d->hEnv);
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
qSqlWarning(QLatin1String("QDB2Driver::open: Unable to allocate environment"), d);
qSqlWarning("QDB2Driver::open: Unable to allocate environment"_L1, d);
setOpenError(true);
return false;
}
@ -1263,7 +1264,7 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
d->hEnv,
&d->hDbc);
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
qSqlWarning(QLatin1String("QDB2Driver::open: Unable to allocate connection"), d);
qSqlWarning("QDB2Driver::open: Unable to allocate connection"_L1, d);
setOpenError(true);
return false;
}
@ -1285,10 +1286,10 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
SQLULEN v = 0;
r = SQL_SUCCESS;
if (opt == QLatin1String("SQL_ATTR_ACCESS_MODE")) {
if (val == QLatin1String("SQL_MODE_READ_ONLY")) {
if (opt == "SQL_ATTR_ACCESS_MODE"_L1) {
if (val == "SQL_MODE_READ_ONLY"_L1) {
v = SQL_MODE_READ_ONLY;
} else if (val == QLatin1String("SQL_MODE_READ_WRITE")) {
} else if (val == "SQL_MODE_READ_WRITE"_L1) {
v = SQL_MODE_READ_WRITE;
} else {
qWarning("QDB2Driver::open: Unknown option value '%s'",
@ -1296,10 +1297,10 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
continue;
}
r = SQLSetConnectAttr(d->hDbc, SQL_ATTR_ACCESS_MODE, reinterpret_cast<SQLPOINTER>(v), 0);
} else if (opt == QLatin1String("SQL_ATTR_LOGIN_TIMEOUT")) {
} else if (opt == "SQL_ATTR_LOGIN_TIMEOUT"_L1) {
v = val.toUInt();
r = SQLSetConnectAttr(d->hDbc, SQL_ATTR_LOGIN_TIMEOUT, reinterpret_cast<SQLPOINTER>(v), 0);
} else if (opt.compare(QLatin1String("PROTOCOL"), Qt::CaseInsensitive) == 0) {
} else if (opt.compare("PROTOCOL"_L1, Qt::CaseInsensitive) == 0) {
protocol = tmp;
}
else {
@ -1312,15 +1313,15 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
}
if (protocol.isEmpty())
protocol = QLatin1String("PROTOCOL=TCPIP");
protocol = "PROTOCOL=TCPIP"_L1;
if (port < 0 )
port = 50000;
QString connQStr;
connQStr = protocol + QLatin1String(";DATABASE=") + db + QLatin1String(";HOSTNAME=") + host
+ QLatin1String(";PORT=") + QString::number(port) + QLatin1String(";UID=") + user
+ QLatin1String(";PWD=") + password;
connQStr = protocol + ";DATABASE="_L1 + db + ";HOSTNAME="_L1 + host
+ ";PORT="_L1 + QString::number(port) + ";UID="_L1 + user
+ ";PWD="_L1 + password;
SQLTCHAR connOut[SQL_MAX_OPTION_STRING_LENGTH];
@ -1356,18 +1357,18 @@ void QDB2Driver::close()
if (isOpen()) {
r = SQLDisconnect(d->hDbc);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QDB2Driver::close: Unable to disconnect datasource"), d);
qSqlWarning("QDB2Driver::close: Unable to disconnect datasource"_L1, d);
}
r = SQLFreeHandle(SQL_HANDLE_DBC, d->hDbc);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QDB2Driver::close: Unable to free connection handle"), d);
qSqlWarning("QDB2Driver::close: Unable to free connection handle"_L1, d);
d->hDbc = 0;
}
if (d->hEnv) {
r = SQLFreeHandle(SQL_HANDLE_ENV, d->hEnv);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QDB2Driver::close: Unable to free environment handle"), d);
qSqlWarning("QDB2Driver::close: Unable to free environment handle"_L1, d);
d->hEnv = 0;
}
setOpen(false);
@ -1411,7 +1412,7 @@ QSqlRecord QDB2Driver::record(const QString& tableName) const
d->hDbc,
&hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QDB2Driver::record: Unable to allocate handle"), d);
qSqlWarning("QDB2Driver::record: Unable to allocate handle"_L1, d);
return fil;
}
@ -1434,7 +1435,7 @@ QSqlRecord QDB2Driver::record(const QString& tableName) const
0);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QDB2Driver::record: Unable to execute column list"), d);
qSqlWarning("QDB2Driver::record: Unable to execute column list"_L1, d);
r = SQLFetchScroll(hStmt,
SQL_FETCH_NEXT,
0);
@ -1449,7 +1450,7 @@ QSqlRecord QDB2Driver::record(const QString& tableName) const
r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QDB2Driver: Unable to free statement handle ")
qSqlWarning("QDB2Driver: Unable to free statement handle "_L1
+ QString::number(r), d);
return fil;
@ -1468,7 +1469,7 @@ QStringList QDB2Driver::tables(QSql::TableType type) const
d->hDbc,
&hStmt);
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
qSqlWarning(QLatin1String("QDB2Driver::tables: Unable to allocate handle"), d);
qSqlWarning("QDB2Driver::tables: Unable to allocate handle"_L1, d);
return tl;
}
r = SQLSetStmtAttr(hStmt,
@ -1478,11 +1479,11 @@ QStringList QDB2Driver::tables(QSql::TableType type) const
QString tableType;
if (type & QSql::Tables)
tableType += QLatin1String("TABLE,");
tableType += "TABLE,"_L1;
if (type & QSql::Views)
tableType += QLatin1String("VIEW,");
tableType += "VIEW,"_L1;
if (type & QSql::SystemTables)
tableType += QLatin1String("SYSTEM TABLE,");
tableType += "SYSTEM TABLE,"_L1;
if (tableType.isEmpty())
return tl;
tableType.chop(1);
@ -1498,7 +1499,7 @@ QStringList QDB2Driver::tables(QSql::TableType type) const
tableType.length());
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO)
qSqlWarning(QLatin1String("QDB2Driver::tables: Unable to execute table list"), d);
qSqlWarning("QDB2Driver::tables: Unable to execute table list"_L1, d);
r = SQLFetchScroll(hStmt,
SQL_FETCH_NEXT,
0);
@ -1522,7 +1523,7 @@ QStringList QDB2Driver::tables(QSql::TableType type) const
r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QDB2Driver::tables: Unable to free statement handle ")
qSqlWarning("QDB2Driver::tables: Unable to free statement handle "_L1
+ QString::number(r), d);
return tl;
}
@ -1540,7 +1541,7 @@ QSqlIndex QDB2Driver::primaryIndex(const QString& tablename) const
d->hDbc,
&hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QDB2Driver::primaryIndex: Unable to list primary key"), d);
qSqlWarning("QDB2Driver::primaryIndex: Unable to list primary key"_L1, d);
return index;
}
QString catalog, schema, table;
@ -1591,7 +1592,7 @@ QSqlIndex QDB2Driver::primaryIndex(const QString& tablename) const
}
r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
if (r!= SQL_SUCCESS)
qSqlWarning(QLatin1String("QDB2Driver: Unable to free statement handle ")
qSqlWarning("QDB2Driver: Unable to free statement handle "_L1
+ QString::number(r), d);
return index;
}
@ -1685,7 +1686,7 @@ bool QDB2Driver::setAutoCommit(bool autoCommit)
QString QDB2Driver::formatValue(const QSqlField &field, bool trimStrings) const
{
if (field.isNull())
return QLatin1String("NULL");
return "NULL"_L1;
switch (field.metaType().id()) {
case QMetaType::QDateTime: {
@ -1705,20 +1706,20 @@ QString QDB2Driver::formatValue(const QSqlField &field, bool trimStrings) const
+ QString::number(tm.msec() * 1000).rightJustified(6, u'0', true)
+ u'\'';
} else {
return QLatin1String("NULL");
return "NULL"_L1;
}
}
case QMetaType::QByteArray: {
QByteArray ba = field.value().toByteArray();
QString res;
res += QLatin1String("BLOB(X'");
res += "BLOB(X'"_L1;
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]);
}
res += QLatin1String("')");
res += "')"_L1;
return res;
}
default:
@ -1736,9 +1737,9 @@ QString QDB2Driver::escapeIdentifier(const QString &identifier, IdentifierType)
{
QString res = identifier;
if (!identifier.isEmpty() && !identifier.startsWith(u'"') && !identifier.endsWith(u'"') ) {
res.replace(u'"', QLatin1String("\"\""));
res.replace(u'"', "\"\""_L1);
res.prepend(u'"').append(u'"');
res.replace(u'.', QLatin1String("\".\""));
res.replace(u'.', "\".\""_L1);
}
return res;
}

View File

@ -43,6 +43,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
class QIBaseDriverPlugin : public QSqlDriverPlugin
{
Q_OBJECT
@ -61,7 +63,7 @@ QIBaseDriverPlugin::QIBaseDriverPlugin()
QSqlDriver* QIBaseDriverPlugin::create(const QString &name)
{
if (name == QLatin1String("QIBASE")) {
if (name == "QIBASE"_L1) {
QIBaseDriver* driver = new QIBaseDriver();
return driver;
}

View File

@ -59,6 +59,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
#define FBVERSION SQL_DIALECT_V6
#ifndef SQLDA_CURRENT_VERSION
@ -82,7 +84,7 @@ static bool getIBaseError(QString& msg, const ISC_STATUS* status, ISC_LONG &sqlc
char buf[512];
while(fb_interpret(buf, 512, &status)) {
if (!msg.isEmpty())
msg += QLatin1String(" - ");
msg += " - "_L1;
msg += QString::fromUtf8(buf);
}
return true;
@ -686,8 +688,8 @@ static char* createArrayBuffer(char *buffer, const QList<QVariant> &list,
bounds[curDim].array_bound_lower + 1);
if (list.size() != elements) { // size mismatch
error = QLatin1String("Expected size: %1. Supplied size: %2");
error = QLatin1String("Array size mismatch. Fieldname: %1 ")
error = "Expected size: %1. Supplied size: %2"_L1;
error = "Array size mismatch. Fieldname: %1 "_L1
+ error.arg(elements).arg(list.size());
return 0;
}
@ -696,7 +698,7 @@ static char* createArrayBuffer(char *buffer, const QList<QVariant> &list,
for(i = 0; i < list.size(); ++i) {
if (list.at(i).typeId() != QMetaType::QVariantList) { // dimensions mismatch
error = QLatin1String("Array dimensons mismatch. Fieldname: %1");
error = "Array dimensons mismatch. Fieldname: %1"_L1;
return 0;
}
@ -799,16 +801,16 @@ bool QIBaseResultPrivate::writeArray(int column, const QList<QVariant> &list)
ba.resize(int(bufLen));
if (list.size() > arraySize) {
error = QLatin1String("Array size mismatch: size of %1 is %2, size of provided list is %3");
error = "Array size mismatch: size of %1 is %2, size of provided list is %3"_L1;
error = error.arg(QLatin1String(sqlname)).arg(arraySize).arg(list.size());
q->setLastError(QSqlError(error, QLatin1String(""), QSqlError::StatementError));
q->setLastError(QSqlError(error, ""_L1, QSqlError::StatementError));
return false;
}
if (!createArrayBuffer(ba.data(), list,
qIBaseTypeName(desc.array_desc_dtype, inda->sqlvar[column].sqlscale < 0),
0, &desc, error)) {
q->setLastError(QSqlError(error.arg(QLatin1String(sqlname)), QLatin1String(""),
q->setLastError(QSqlError(error.arg(QLatin1String(sqlname)), ""_L1,
QSqlError::StatementError));
return false;
}
@ -972,9 +974,9 @@ bool QIBaseResult::exec()
const QList<QVariant> &values = boundValues();
int i;
if (values.count() > d->inda->sqld) {
qWarning() << QLatin1String("QIBaseResult::exec: Parameter mismatch, expected") <<
d->inda->sqld << QLatin1String(", got") << values.count() <<
QLatin1String("parameters");
qWarning() << "QIBaseResult::exec: Parameter mismatch, expected"_L1 <<
d->inda->sqld << ", got"_L1 << values.count() <<
"parameters"_L1;
return false;
}
int para = 0;
@ -1370,11 +1372,11 @@ QSqlRecord QIBaseResult::record() const
if (v.sqlscale < 0) {
QSqlQuery q(driver()->createResult());
q.setForwardOnly(true);
q.exec(QLatin1String("select b.RDB$FIELD_PRECISION, b.RDB$FIELD_SCALE, b.RDB$FIELD_LENGTH, a.RDB$NULL_FLAG "
q.exec("select b.RDB$FIELD_PRECISION, b.RDB$FIELD_SCALE, b.RDB$FIELD_LENGTH, a.RDB$NULL_FLAG "
"FROM RDB$RELATION_FIELDS a, RDB$FIELDS b "
"WHERE b.RDB$FIELD_NAME = a.RDB$FIELD_SOURCE "
"AND a.RDB$RELATION_NAME = '") + QString::fromLatin1(v.relname, v.relname_length) + QLatin1String("' "
"AND a.RDB$FIELD_NAME = '") + QString::fromLatin1(v.sqlname, v.sqlname_length) + QLatin1String("' "));
"AND a.RDB$RELATION_NAME = '"_L1 + QString::fromLatin1(v.relname, v.relname_length) + "' "
"AND a.RDB$FIELD_NAME = '"_L1 + QString::fromLatin1(v.sqlname, v.sqlname_length) + "' "_L1);
if (q.first()) {
if (v.sqlscale < 0) {
f.setLength(q.value(0).toInt());
@ -1462,7 +1464,7 @@ bool QIBaseDriver::open(const QString & db,
if ((idx = tmp.indexOf(u'=')) != -1) {
QString val = tmp.mid(idx + 1).simplified();
QString opt = tmp.left(idx).simplified();
if (opt.toUpper() == QLatin1String("ISC_DPB_SQL_ROLE_NAME")) {
if (opt.toUpper() == "ISC_DPB_SQL_ROLE_NAME"_L1) {
role = val.toLocal8Bit();
role.truncate(255);
}
@ -1601,25 +1603,25 @@ QStringList QIBaseDriver::tables(QSql::TableType type) const
QString typeFilter;
if (type == QSql::SystemTables) {
typeFilter += QLatin1String("RDB$SYSTEM_FLAG != 0");
typeFilter += "RDB$SYSTEM_FLAG != 0"_L1;
} else if (type == (QSql::SystemTables | QSql::Views)) {
typeFilter += QLatin1String("RDB$SYSTEM_FLAG != 0 OR RDB$VIEW_BLR NOT NULL");
typeFilter += "RDB$SYSTEM_FLAG != 0 OR RDB$VIEW_BLR NOT NULL"_L1;
} else {
if (!(type & QSql::SystemTables))
typeFilter += QLatin1String("RDB$SYSTEM_FLAG = 0 AND ");
typeFilter += "RDB$SYSTEM_FLAG = 0 AND "_L1;
if (!(type & QSql::Views))
typeFilter += QLatin1String("RDB$VIEW_BLR IS NULL AND ");
typeFilter += "RDB$VIEW_BLR IS NULL AND "_L1;
if (!(type & QSql::Tables))
typeFilter += QLatin1String("RDB$VIEW_BLR IS NOT NULL AND ");
typeFilter += "RDB$VIEW_BLR IS NOT NULL AND "_L1;
if (!typeFilter.isEmpty())
typeFilter.chop(5);
}
if (!typeFilter.isEmpty())
typeFilter.prepend(QLatin1String("where "));
typeFilter.prepend("where "_L1);
QSqlQuery q(createResult());
q.setForwardOnly(true);
if (!q.exec(QLatin1String("select rdb$relation_name from rdb$relations ") + typeFilter))
if (!q.exec("select rdb$relation_name from rdb$relations "_L1 + typeFilter))
return res;
while(q.next())
res << q.value(0).toString().simplified();
@ -1640,12 +1642,12 @@ QSqlRecord QIBaseDriver::record(const QString& tablename) const
table = stripDelimiters(table, QSqlDriver::TableName);
else
table = table.toUpper();
q.exec(QLatin1String("SELECT a.RDB$FIELD_NAME, b.RDB$FIELD_TYPE, b.RDB$FIELD_LENGTH, "
q.exec("SELECT a.RDB$FIELD_NAME, b.RDB$FIELD_TYPE, b.RDB$FIELD_LENGTH, "
"b.RDB$FIELD_SCALE, b.RDB$FIELD_PRECISION, a.RDB$NULL_FLAG "
"FROM RDB$RELATION_FIELDS a, RDB$FIELDS b "
"WHERE b.RDB$FIELD_NAME = a.RDB$FIELD_SOURCE "
"AND a.RDB$RELATION_NAME = '") + table + QLatin1String("' "
"ORDER BY a.RDB$FIELD_POSITION"));
"AND a.RDB$RELATION_NAME = '"_L1 + table + "' "
"ORDER BY a.RDB$FIELD_POSITION"_L1);
while (q.next()) {
int type = q.value(1).toInt();
@ -1680,15 +1682,15 @@ QSqlIndex QIBaseDriver::primaryIndex(const QString &table) const
QSqlQuery q(createResult());
q.setForwardOnly(true);
q.exec(QLatin1String("SELECT a.RDB$INDEX_NAME, b.RDB$FIELD_NAME, d.RDB$FIELD_TYPE, d.RDB$FIELD_SCALE "
q.exec("SELECT a.RDB$INDEX_NAME, b.RDB$FIELD_NAME, d.RDB$FIELD_TYPE, d.RDB$FIELD_SCALE "
"FROM RDB$RELATION_CONSTRAINTS a, RDB$INDEX_SEGMENTS b, RDB$RELATION_FIELDS c, RDB$FIELDS d "
"WHERE a.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' "
"AND a.RDB$RELATION_NAME = '") + tablename +
QLatin1String(" 'AND a.RDB$INDEX_NAME = b.RDB$INDEX_NAME "
"AND a.RDB$RELATION_NAME = '"_L1 + tablename +
" 'AND a.RDB$INDEX_NAME = b.RDB$INDEX_NAME "
"AND c.RDB$RELATION_NAME = a.RDB$RELATION_NAME "
"AND c.RDB$FIELD_NAME = b.RDB$FIELD_NAME "
"AND d.RDB$FIELD_NAME = c.RDB$FIELD_SOURCE "
"ORDER BY b.RDB$FIELD_POSITION"));
"ORDER BY b.RDB$FIELD_POSITION"_L1);
while (q.next()) {
QSqlField field(q.value(1).toString().simplified(),
@ -1716,7 +1718,7 @@ QString QIBaseDriver::formatValue(const QSqlField &field, bool trimStrings) cons
QString::number(datetime.time().msec()).rightJustified(3, u'0', true) +
u'\'';
else
return QLatin1String("NULL");
return "NULL"_L1;
}
case QMetaType::QTime: {
QTime time = field.value().toTime();
@ -1727,7 +1729,7 @@ QString QIBaseDriver::formatValue(const QSqlField &field, bool trimStrings) cons
QString::number(time.msec()).rightJustified(3, u'0', true) +
u'\'';
else
return QLatin1String("NULL");
return "NULL"_L1;
}
case QMetaType::QDate: {
QDate date = field.value().toDate();
@ -1736,7 +1738,7 @@ QString QIBaseDriver::formatValue(const QSqlField &field, bool trimStrings) cons
QString::number(date.month()) + u'-' +
QString::number(date.day()) + u'\'';
else
return QLatin1String("NULL");
return "NULL"_L1;
}
default:
return QSqlDriver::formatValue(field, trimStrings);
@ -1893,9 +1895,9 @@ QString QIBaseDriver::escapeIdentifier(const QString &identifier, IdentifierType
{
QString res = identifier;
if (!identifier.isEmpty() && !identifier.startsWith(u'"') && !identifier.endsWith(u'"') ) {
res.replace(u'"', QLatin1String("\"\""));
res.replace(u'"', "\"\""_L1);
res.prepend(u'"').append(u'"');
res.replace(u'.', QLatin1String("\".\""));
res.replace(u'.', "\".\""_L1);
}
return res;
}

View File

@ -43,6 +43,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
class QMYSQLDriverPlugin : public QSqlDriverPlugin
{
Q_OBJECT
@ -61,8 +63,7 @@ QMYSQLDriverPlugin::QMYSQLDriverPlugin()
QSqlDriver* QMYSQLDriverPlugin::create(const QString &name)
{
if (name == QLatin1String("QMYSQL") ||
name == QLatin1String("QMARIADB")) {
if (name == "QMYSQL"_L1 || name == "QMARIADB"_L1) {
QMYSQLDriver* driver = new QMYSQLDriver();
return driver;
}

View File

@ -71,6 +71,8 @@ using my_bool = decltype(mysql_stmt_bind_result(nullptr, nullptr));
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
class QMYSQLDriverPrivate : public QSqlDriverPrivate
{
Q_DECLARE_PUBLIC(QMYSQLDriver)
@ -209,7 +211,7 @@ static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
const QMYSQLDriverPrivate* p)
{
const char *cerr = p->mysql ? mysql_error(p->mysql) : 0;
return QSqlError(QLatin1String("QMYSQL: ") + err,
return QSqlError("QMYSQL: "_L1 + err,
QString::fromUtf8(cerr),
type, QString::number(mysql_errno(p->mysql)));
}
@ -290,7 +292,7 @@ static QSqlError qMakeStmtError(const QString& err, QSqlError::ErrorType type,
MYSQL_STMT* stmt)
{
const char *cerr = mysql_stmt_error(stmt);
return QSqlError(QLatin1String("QMYSQL: ") + err,
return QSqlError("QMYSQL: "_L1 + err,
QString::fromLatin1(cerr),
type, QString::number(mysql_stmt_errno(stmt)));
}
@ -1168,19 +1170,19 @@ bool QMYSQLDriver::hasFeature(DriverFeature f) const
static void setOptionFlag(uint &optionFlags, const QString &opt)
{
if (opt == QLatin1String("CLIENT_COMPRESS"))
if (opt == "CLIENT_COMPRESS"_L1)
optionFlags |= CLIENT_COMPRESS;
else if (opt == QLatin1String("CLIENT_FOUND_ROWS"))
else if (opt == "CLIENT_FOUND_ROWS"_L1)
optionFlags |= CLIENT_FOUND_ROWS;
else if (opt == QLatin1String("CLIENT_IGNORE_SPACE"))
else if (opt == "CLIENT_IGNORE_SPACE"_L1)
optionFlags |= CLIENT_IGNORE_SPACE;
else if (opt == QLatin1String("CLIENT_INTERACTIVE"))
else if (opt == "CLIENT_INTERACTIVE"_L1)
optionFlags |= CLIENT_INTERACTIVE;
else if (opt == QLatin1String("CLIENT_NO_SCHEMA"))
else if (opt == "CLIENT_NO_SCHEMA"_L1)
optionFlags |= CLIENT_NO_SCHEMA;
else if (opt == QLatin1String("CLIENT_ODBC"))
else if (opt == "CLIENT_ODBC"_L1)
optionFlags |= CLIENT_ODBC;
else if (opt == QLatin1String("CLIENT_SSL"))
else if (opt == "CLIENT_SSL"_L1)
qWarning("QMYSQLDriver: SSL_KEY, SSL_CERT and SSL_CA should be used instead of CLIENT_SSL.");
else
qWarning("QMYSQLDriver::open: Unknown connect option '%s'", opt.toLocal8Bit().constData());
@ -1222,28 +1224,28 @@ bool QMYSQLDriver::open(const QString& db,
if ((idx = tmp.indexOf(u'=')) != -1) {
QString val = tmp.mid(idx + 1).simplified();
QString opt = tmp.left(idx).simplified();
if (opt == QLatin1String("UNIX_SOCKET"))
if (opt == "UNIX_SOCKET"_L1)
unixSocket = val;
else if (opt == QLatin1String("MYSQL_OPT_RECONNECT")) {
if (val == QLatin1String("TRUE") || val == QLatin1String("1") || val.isEmpty())
else if (opt == "MYSQL_OPT_RECONNECT"_L1) {
if (val == "TRUE"_L1 || val == "1"_L1 || val.isEmpty())
reconnect = true;
} else if (opt == QLatin1String("MYSQL_OPT_CONNECT_TIMEOUT"))
} else if (opt == "MYSQL_OPT_CONNECT_TIMEOUT"_L1)
connectTimeout = val.toInt();
else if (opt == QLatin1String("MYSQL_OPT_READ_TIMEOUT"))
else if (opt == "MYSQL_OPT_READ_TIMEOUT"_L1)
readTimeout = val.toInt();
else if (opt == QLatin1String("MYSQL_OPT_WRITE_TIMEOUT"))
else if (opt == "MYSQL_OPT_WRITE_TIMEOUT"_L1)
writeTimeout = val.toInt();
else if (opt == QLatin1String("SSL_KEY"))
else if (opt == "SSL_KEY"_L1)
sslKey = val;
else if (opt == QLatin1String("SSL_CERT"))
else if (opt == "SSL_CERT"_L1)
sslCert = val;
else if (opt == QLatin1String("SSL_CA"))
else if (opt == "SSL_CA"_L1)
sslCA = val;
else if (opt == QLatin1String("SSL_CAPATH"))
else if (opt == "SSL_CAPATH"_L1)
sslCAPath = val;
else if (opt == QLatin1String("SSL_CIPHER"))
else if (opt == "SSL_CIPHER"_L1)
sslCipher = val;
else if (val == QLatin1String("TRUE") || val == QLatin1String("1"))
else if (val == "TRUE"_L1 || val == "1"_L1)
setOptionFlag(optionFlags, tmp.left(idx).simplified());
else
qWarning("QMYSQLDriver::open: Illegal connect option value '%s'",
@ -1374,14 +1376,14 @@ QStringList QMYSQLDriver::tables(QSql::TableType type) const
QStringList tl;
QSqlQuery q(createResult());
if (type & QSql::Tables) {
QString sql = QLatin1String("select table_name from information_schema.tables where table_schema = '") + QLatin1String(d->mysql->db) + QLatin1String("' and table_type = 'BASE TABLE'");
QString sql = "select table_name from information_schema.tables where table_schema = '"_L1 + QLatin1String(d->mysql->db) + "' and table_type = 'BASE TABLE'"_L1;
q.exec(sql);
while (q.next())
tl.append(q.value(0).toString());
}
if (type & QSql::Views) {
QString sql = QLatin1String("select table_name from information_schema.tables where table_schema = '") + QLatin1String(d->mysql->db) + QLatin1String("' and table_type = 'VIEW'");
QString sql = "select table_name from information_schema.tables where table_schema = '"_L1 + QLatin1String(d->mysql->db) + "' and table_type = 'VIEW'"_L1;
q.exec(sql);
while (q.next())
@ -1397,11 +1399,11 @@ QSqlIndex QMYSQLDriver::primaryIndex(const QString& tablename) const
return idx;
QSqlQuery i(createResult());
QString stmt(QLatin1String("show index from %1;"));
QString stmt("show index from %1;"_L1);
QSqlRecord fil = record(tablename);
i.exec(stmt.arg(escapeIdentifier(tablename, QSqlDriver::TableName)));
while (i.isActive() && i.next()) {
if (i.value(2).toString() == QLatin1String("PRIMARY")) {
if (i.value(2).toString() == "PRIMARY"_L1) {
idx.append(fil.field(i.value(4).toString()));
idx.setCursorName(i.value(0).toString());
idx.setName(i.value(2).toString());
@ -1498,7 +1500,7 @@ QString QMYSQLDriver::formatValue(const QSqlField &field, bool trimStrings) cons
case QMetaType::QString:
// Escape '\' characters
r = QSqlDriver::formatValue(field, trimStrings);
r.replace(QLatin1String("\\"), QLatin1String("\\\\"));
r.replace("\\"_L1, "\\\\"_L1);
break;
case QMetaType::QByteArray:
if (isOpen()) {
@ -1539,7 +1541,7 @@ QString QMYSQLDriver::escapeIdentifier(const QString &identifier, IdentifierType
QString res = identifier;
if (!identifier.isEmpty() && !identifier.startsWith(u'`') && !identifier.endsWith(u'`') ) {
res.prepend(u'`').append(u'`');
res.replace(u'.', QLatin1String("`.`"));
res.replace(u'.', "`.`"_L1);
}
return res;
}

View File

@ -43,6 +43,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
class QOCIDriverPlugin : public QSqlDriverPlugin
{
Q_OBJECT
@ -61,7 +63,7 @@ QOCIDriverPlugin::QOCIDriverPlugin()
QSqlDriver* QOCIDriverPlugin::create(const QString &name)
{
if (name == QLatin1String("QOCI")) {
if (name == "QOCI"_L1) {
QOCIDriver* driver = new QOCIDriver();
return driver;
}

View File

@ -92,6 +92,8 @@ Q_DECLARE_METATYPE(OCIStmt*)
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
enum { QOCIEncoding = 2002 }; // AL16UTF16LE
#else
@ -654,15 +656,15 @@ QSqlError qMakeError(const QString& errString, QSqlError::ErrorType type, OCIErr
QMetaType qDecodeOCIType(const QString& ocitype, QSql::NumericalPrecisionPolicy precisionPolicy)
{
int type = QMetaType::UnknownType;
if (ocitype == QLatin1String("VARCHAR2") || ocitype == QLatin1String("VARCHAR")
|| ocitype.startsWith(QLatin1String("INTERVAL"))
|| ocitype == QLatin1String("CHAR") || ocitype == QLatin1String("NVARCHAR2")
|| ocitype == QLatin1String("NCHAR"))
if (ocitype == "VARCHAR2"_L1 || ocitype == "VARCHAR"_L1
|| ocitype.startsWith("INTERVAL"_L1)
|| ocitype == "CHAR"_L1 || ocitype == "NVARCHAR2"_L1
|| ocitype == "NCHAR"_L1)
type = QMetaType::QString;
else if (ocitype == QLatin1String("NUMBER")
|| ocitype == QLatin1String("FLOAT")
|| ocitype == QLatin1String("BINARY_FLOAT")
|| ocitype == QLatin1String("BINARY_DOUBLE")) {
else if (ocitype == "NUMBER"_L1
|| ocitype == "FLOAT"_L1
|| ocitype == "BINARY_FLOAT"_L1
|| ocitype == "BINARY_DOUBLE"_L1) {
switch(precisionPolicy) {
case QSql::LowPrecisionInt32:
type = QMetaType::Int;
@ -679,16 +681,15 @@ QMetaType qDecodeOCIType(const QString& ocitype, QSql::NumericalPrecisionPolicy
break;
}
}
else if (ocitype == QLatin1String("LONG") || ocitype == QLatin1String("NCLOB")
|| ocitype == QLatin1String("CLOB"))
else if (ocitype == "LONG"_L1 || ocitype == "NCLOB"_L1 || ocitype == "CLOB"_L1)
type = QMetaType::QByteArray;
else if (ocitype == QLatin1String("RAW") || ocitype == QLatin1String("LONG RAW")
|| ocitype == QLatin1String("ROWID") || ocitype == QLatin1String("BLOB")
|| ocitype == QLatin1String("CFILE") || ocitype == QLatin1String("BFILE"))
else if (ocitype == "RAW"_L1 || ocitype == "LONG RAW"_L1
|| ocitype == "ROWID"_L1 || ocitype == "BLOB"_L1
|| ocitype == "CFILE"_L1 || ocitype == "BFILE"_L1)
type = QMetaType::QByteArray;
else if (ocitype == QLatin1String("DATE") || ocitype.startsWith(QLatin1String("TIME")))
else if (ocitype == "DATE"_L1 || ocitype.startsWith("TIME"_L1))
type = QMetaType::QDateTime;
else if (ocitype == QLatin1String("UNDEFINED"))
else if (ocitype == "UNDEFINED"_L1)
type = QMetaType::UnknownType;
if (type == QMetaType::UnknownType)
qWarning("qDecodeOCIType: unknown type: %s", ocitype.toLocal8Bit().constData());
@ -2237,11 +2238,11 @@ static void qParseOpts(const QString &options, QOCIDriverPrivate *d)
const QString opt = tmp.left(idx);
const QString val = tmp.mid(idx + 1).simplified();
bool ok;
if (opt == QLatin1String("OCI_ATTR_PREFETCH_ROWS")) {
if (opt == "OCI_ATTR_PREFETCH_ROWS"_L1) {
d->prefetchRows = val.toInt(&ok);
if (!ok)
d->prefetchRows = -1;
} else if (opt == QLatin1String("OCI_ATTR_PREFETCH_MEMORY")) {
} else if (opt == "OCI_ATTR_PREFETCH_MEMORY"_L1) {
d->prefetchMem = val.toInt(&ok);
if (!ok)
d->prefetchMem = -1;
@ -2349,7 +2350,7 @@ bool QOCIDriver::open(const QString & db,
QString versionStr;
versionStr = QString(reinterpret_cast<const QChar *>(vertxt));
#if QT_CONFIG(regularexpression)
auto match = QRegularExpression(QLatin1String("([0-9]+)\\.[0-9\\.]+[0-9]")).match(versionStr);
auto match = QRegularExpression("([0-9]+)\\.[0-9\\.]+[0-9]"_L1).match(versionStr);
if (match.hasMatch())
d->serverVersion = match.captured(1).toInt();
#endif
@ -2478,7 +2479,7 @@ static QString make_where_clause(const QString &user, Expression e)
for (const auto &sysUser : sysUsers) {
const QLatin1String l1(sysUser);
if (l1 != user)
result += QLatin1String("owner ") + bang[e] + QLatin1String("= '") + l1 + QLatin1String("' ") + join + u' ';
result += "owner "_L1 + bang[e] + "= '"_L1 + l1 + "' "_L1 + join + u' ';
}
result.chop(join.size() + 2); // remove final " <join> "
@ -2503,7 +2504,7 @@ QStringList QOCIDriver::tables(QSql::TableType type) const
QSqlQuery t(createResult());
t.setForwardOnly(true);
if (type & QSql::Tables) {
const QLatin1String tableQuery("select owner, table_name from all_tables where ");
const auto tableQuery = "select owner, table_name from all_tables where "_L1;
const QString where = make_where_clause(user, AndExpression);
t.exec(tableQuery + where);
while (t.next()) {
@ -2514,7 +2515,7 @@ QStringList QOCIDriver::tables(QSql::TableType type) const
}
// list all table synonyms as well
const QLatin1String synonymQuery("select owner, synonym_name from all_synonyms where ");
const auto synonymQuery = "select owner, synonym_name from all_synonyms where "_L1;
t.exec(synonymQuery + where);
while (t.next()) {
if (t.value(0).toString() != d->user)
@ -2524,7 +2525,7 @@ QStringList QOCIDriver::tables(QSql::TableType type) const
}
}
if (type & QSql::Views) {
const QLatin1String query("select owner, view_name from all_views where ");
const auto query = "select owner, view_name from all_views where "_L1;
const QString where = make_where_clause(user, AndExpression);
t.exec(query + where);
while (t.next()) {
@ -2535,11 +2536,11 @@ QStringList QOCIDriver::tables(QSql::TableType type) const
}
}
if (type & QSql::SystemTables) {
t.exec(QLatin1String("select table_name from dictionary"));
t.exec("select table_name from dictionary"_L1);
while (t.next()) {
tl.append(t.value(0).toString());
}
const QLatin1String tableQuery("select owner, table_name from all_tables where ");
const auto tableQuery = "select owner, table_name from all_tables where "_L1;
const QString where = make_where_clause(user, OrExpression);
t.exec(tableQuery + where);
while (t.next()) {
@ -2550,7 +2551,7 @@ QStringList QOCIDriver::tables(QSql::TableType type) const
}
// list all table synonyms as well
const QLatin1String synonymQuery("select owner, synonym_name from all_synonyms where ");
const auto synonymQuery = "select owner, synonym_name from all_synonyms where "_L1;
t.exec(synonymQuery + where);
while (t.next()) {
if (t.value(0).toString() != d->user)
@ -2584,14 +2585,14 @@ QSqlRecord QOCIDriver::record(const QString& tablename) const
QSqlQuery t(createResult());
// using two separate queries for this is A LOT faster than using
// eg. a sub-query on the sys.synonyms table
QString stmt(QLatin1String("select column_name, data_type, data_length, "
QString stmt("select column_name, data_type, data_length, "
"data_precision, data_scale, nullable, data_default%1"
"from all_tab_columns a "
"where a.table_name=%2"));
"where a.table_name=%2"_L1);
if (d->serverVersion >= 9)
stmt = stmt.arg(QLatin1String(", char_length "));
stmt = stmt.arg(", char_length "_L1);
else
stmt = stmt.arg(QLatin1String(" "));
stmt = stmt.arg(" "_L1);
bool buildRecordInfo = false;
QString table, owner, tmpStmt;
qSplitTableAndOwner(tablename, &table, &owner);
@ -2611,14 +2612,12 @@ QSqlRecord QOCIDriver::record(const QString& tablename) const
else
owner = owner.toUpper();
tmpStmt += QLatin1String(" and a.owner='") + owner + u'\'';
tmpStmt += " and a.owner='"_L1 + owner + u'\'';
t.setForwardOnly(true);
t.exec(tmpStmt);
if (!t.next()) { // try and see if the tablename is a synonym
stmt = stmt + QLatin1String(" join all_synonyms b "
"on a.owner=b.table_owner and a.table_name=b.table_name "
"where b.owner='") + owner +
QLatin1String("' and b.synonym_name='") + table + u'\'';
stmt = stmt + " join all_synonyms b on a.owner=b.table_owner and a.table_name=b.table_name "
"where b.owner='"_L1 + owner + "' and b.synonym_name='"_L1 + table + u'\'';
t.setForwardOnly(true);
t.exec(stmt);
if (t.next())
@ -2626,13 +2625,13 @@ QSqlRecord QOCIDriver::record(const QString& tablename) const
} else {
buildRecordInfo = true;
}
QStringList keywords = QStringList() << QLatin1String("NUMBER") << QLatin1String("FLOAT") << QLatin1String("BINARY_FLOAT")
<< QLatin1String("BINARY_DOUBLE");
QStringList keywords = QStringList() << "NUMBER"_L1 << "FLOAT"_L1 << "BINARY_FLOAT"_L1
<< "BINARY_DOUBLE"_L1;
if (buildRecordInfo) {
do {
QMetaType ty = qDecodeOCIType(t.value(1).toString(), t.numericalPrecisionPolicy());
QSqlField f(t.value(0).toString(), ty);
f.setRequired(t.value(5).toString() == QLatin1String("N"));
f.setRequired(t.value(5).toString() == "N"_L1);
f.setPrecision(t.value(4).toInt());
if (d->serverVersion >= 9 && (ty.id() == QMetaType::QString) && !t.isNull(3) && !keywords.contains(t.value(1).toString())) {
// Oracle9: data_length == size in bytes, char_length == amount of characters
@ -2654,11 +2653,11 @@ QSqlIndex QOCIDriver::primaryIndex(const QString& tablename) const
if (!isOpen())
return idx;
QSqlQuery t(createResult());
QString stmt(QLatin1String("select b.column_name, b.index_name, a.table_name, a.owner "
QString stmt("select b.column_name, b.index_name, a.table_name, a.owner "
"from all_constraints a, all_ind_columns b "
"where a.constraint_type='P' "
"and b.index_name = a.index_name "
"and b.index_owner = a.owner"));
"and b.index_owner = a.owner"_L1);
bool buildIndex = false;
QString table, owner, tmpStmt;
@ -2669,7 +2668,7 @@ QSqlIndex QOCIDriver::primaryIndex(const QString& tablename) const
else
table = table.toUpper();
tmpStmt = stmt + QLatin1String(" and a.table_name='") + table + u'\'';
tmpStmt = stmt + " and a.table_name='"_L1 + table + u'\'';
if (owner.isEmpty()) {
owner = d->user;
}
@ -2679,13 +2678,13 @@ QSqlIndex QOCIDriver::primaryIndex(const QString& tablename) const
else
owner = owner.toUpper();
tmpStmt += QLatin1String(" and a.owner='") + owner + u'\'';
tmpStmt += " and a.owner='"_L1 + owner + u'\'';
t.setForwardOnly(true);
t.exec(tmpStmt);
if (!t.next()) {
stmt += QLatin1String(" and a.table_name=(select tname from sys.synonyms "
"where sname='") + table + QLatin1String("' and creator=a.owner)");
stmt += " and a.table_name=(select tname from sys.synonyms where sname='"_L1
+ table + "' and creator=a.owner)"_L1;
t.setForwardOnly(true);
t.exec(stmt);
if (t.next()) {
@ -2700,9 +2699,9 @@ QSqlIndex QOCIDriver::primaryIndex(const QString& tablename) const
tt.setForwardOnly(true);
idx.setName(t.value(1).toString());
do {
tt.exec(QLatin1String("select data_type from all_tab_columns where table_name='") +
t.value(2).toString() + QLatin1String("' and column_name='") +
t.value(0).toString() + QLatin1String("' and owner='") +
tt.exec("select data_type from all_tab_columns where table_name='"_L1 +
t.value(2).toString() + "' and column_name='"_L1 +
t.value(0).toString() + "' and owner='"_L1 +
owner + u'\'');
if (!tt.next()) {
return QSqlIndex();
@ -2722,16 +2721,16 @@ QString QOCIDriver::formatValue(const QSqlField &field, bool trimStrings) const
QDateTime datetime = field.value().toDateTime();
QString datestring;
if (datetime.isValid()) {
datestring = QLatin1String("TO_DATE('") + QString::number(datetime.date().year())
datestring = "TO_DATE('"_L1 + QString::number(datetime.date().year())
+ u'-'
+ QString::number(datetime.date().month()) + u'-'
+ QString::number(datetime.date().day()) + u' '
+ QString::number(datetime.time().hour()) + u':'
+ QString::number(datetime.time().minute()) + u':'
+ QString::number(datetime.time().second())
+ QLatin1String("','YYYY-MM-DD HH24:MI:SS')");
+ "','YYYY-MM-DD HH24:MI:SS')"_L1;
} else {
datestring = QLatin1String("NULL");
datestring = "NULL"_L1;
}
return datestring;
}
@ -2739,13 +2738,13 @@ QString QOCIDriver::formatValue(const QSqlField &field, bool trimStrings) const
QDateTime datetime = field.value().toDateTime();
QString datestring;
if (datetime.isValid()) {
datestring = QLatin1String("TO_DATE('")
datestring = "TO_DATE('"_L1
+ QString::number(datetime.time().hour()) + u':'
+ QString::number(datetime.time().minute()) + u':'
+ QString::number(datetime.time().second())
+ QLatin1String("','HH24:MI:SS')");
+ "','HH24:MI:SS')"_L1;
} else {
datestring = QLatin1String("NULL");
datestring = "NULL"_L1;
}
return datestring;
}
@ -2753,12 +2752,12 @@ QString QOCIDriver::formatValue(const QSqlField &field, bool trimStrings) const
QDate date = field.value().toDate();
QString datestring;
if (date.isValid()) {
datestring = QLatin1String("TO_DATE('") + QString::number(date.year()) +
datestring = "TO_DATE('"_L1 + QString::number(date.year()) +
u'-' +
QString::number(date.month()) + u'-' +
QString::number(date.day()) + QLatin1String("','YYYY-MM-DD')");
QString::number(date.day()) + "','YYYY-MM-DD')"_L1;
} else {
datestring = QLatin1String("NULL");
datestring = "NULL"_L1;
}
return datestring;
}
@ -2778,9 +2777,9 @@ QString QOCIDriver::escapeIdentifier(const QString &identifier, IdentifierType t
{
QString res = identifier;
if (!identifier.isEmpty() && !isIdentifierEscaped(identifier, type)) {
res.replace(u'"', QLatin1String("\"\""));
res.replace(u'"', "\"\""_L1);
res.prepend(u'"').append(u'"');
res.replace(u'.', QLatin1String("\".\""));
res.replace(u'.', "\".\""_L1);
}
return res;
}

View File

@ -43,6 +43,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
class QODBCDriverPlugin : public QSqlDriverPlugin
{
Q_OBJECT
@ -61,7 +63,7 @@ QODBCDriverPlugin::QODBCDriverPlugin()
QSqlDriver* QODBCDriverPlugin::create(const QString &name)
{
if (name == QLatin1String("QODBC")) {
if (name == "QODBC"_L1) {
QODBCDriver* driver = new QODBCDriver();
return driver;
}

View File

@ -60,6 +60,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
// undefine this to prevent initial check of the ODBC driver
#define ODBC_CHECK_DRIVER
@ -328,7 +330,7 @@ static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type, const
{
int nativeCode = -1;
QString message = qODBCWarn(p, &nativeCode);
return QSqlError(QLatin1String("QODBC: ") + err, message, type,
return QSqlError("QODBC: "_L1 + err, message, type,
nativeCode != -1 ? QString::number(nativeCode) : QString());
}
@ -337,7 +339,7 @@ static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
{
int nativeCode = -1;
QString message = qODBCWarn(p, &nativeCode);
return QSqlError(QLatin1String("QODBC: ") + err, message, type,
return QSqlError("QODBC: "_L1 + err, message, type,
nativeCode != -1 ? QString::number(nativeCode) : QString());
}
@ -743,7 +745,7 @@ static QSqlField qMakeFieldInfo(const SQLHANDLE hStmt, int i, QString *errorMess
static size_t qGetODBCVersion(const QString &connOpts)
{
if (connOpts.contains(QLatin1String("SQL_ATTR_ODBC_VERSION=SQL_OV_ODBC3"), Qt::CaseInsensitive))
if (connOpts.contains("SQL_ATTR_ODBC_VERSION=SQL_OV_ODBC3"_L1, Qt::CaseInsensitive))
return SQL_OV_ODBC3;
return SQL_OV_ODBC2;
}
@ -785,82 +787,82 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts)
SQLUINTEGER v = 0;
r = SQL_SUCCESS;
if (opt.toUpper() == QLatin1String("SQL_ATTR_ACCESS_MODE")) {
if (val.toUpper() == QLatin1String("SQL_MODE_READ_ONLY")) {
if (opt.toUpper() == "SQL_ATTR_ACCESS_MODE"_L1) {
if (val.toUpper() == "SQL_MODE_READ_ONLY"_L1) {
v = SQL_MODE_READ_ONLY;
} else if (val.toUpper() == QLatin1String("SQL_MODE_READ_WRITE")) {
} else if (val.toUpper() == "SQL_MODE_READ_WRITE"_L1) {
v = SQL_MODE_READ_WRITE;
} else {
qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\'';
continue;
}
r = SQLSetConnectAttr(hDbc, SQL_ATTR_ACCESS_MODE, (SQLPOINTER) size_t(v), 0);
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_CONNECTION_TIMEOUT")) {
} else if (opt.toUpper() == "SQL_ATTR_CONNECTION_TIMEOUT"_L1) {
v = val.toUInt();
r = SQLSetConnectAttr(hDbc, SQL_ATTR_CONNECTION_TIMEOUT, (SQLPOINTER) size_t(v), 0);
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_LOGIN_TIMEOUT")) {
} else if (opt.toUpper() == "SQL_ATTR_LOGIN_TIMEOUT"_L1) {
v = val.toUInt();
r = SQLSetConnectAttr(hDbc, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER) size_t(v), 0);
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_CURRENT_CATALOG")) {
} else if (opt.toUpper() == "SQL_ATTR_CURRENT_CATALOG"_L1) {
val.utf16(); // 0 terminate
r = SQLSetConnectAttr(hDbc, SQL_ATTR_CURRENT_CATALOG,
toSQLTCHAR(val).data(),
SQLINTEGER(val.length() * sizeof(SQLTCHAR)));
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_METADATA_ID")) {
if (val.toUpper() == QLatin1String("SQL_TRUE")) {
} else if (opt.toUpper() == "SQL_ATTR_METADATA_ID"_L1) {
if (val.toUpper() == "SQL_TRUE"_L1) {
v = SQL_TRUE;
} else if (val.toUpper() == QLatin1String("SQL_FALSE")) {
} else if (val.toUpper() == "SQL_FALSE"_L1) {
v = SQL_FALSE;
} else {
qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\'';
continue;
}
r = SQLSetConnectAttr(hDbc, SQL_ATTR_METADATA_ID, (SQLPOINTER) size_t(v), 0);
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_PACKET_SIZE")) {
} else if (opt.toUpper() == "SQL_ATTR_PACKET_SIZE"_L1) {
v = val.toUInt();
r = SQLSetConnectAttr(hDbc, SQL_ATTR_PACKET_SIZE, (SQLPOINTER) size_t(v), 0);
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_TRACEFILE")) {
} else if (opt.toUpper() == "SQL_ATTR_TRACEFILE"_L1) {
val.utf16(); // 0 terminate
r = SQLSetConnectAttr(hDbc, SQL_ATTR_TRACEFILE,
toSQLTCHAR(val).data(),
SQLINTEGER(val.length() * sizeof(SQLTCHAR)));
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_TRACE")) {
if (val.toUpper() == QLatin1String("SQL_OPT_TRACE_OFF")) {
} else if (opt.toUpper() == "SQL_ATTR_TRACE"_L1) {
if (val.toUpper() == "SQL_OPT_TRACE_OFF"_L1) {
v = SQL_OPT_TRACE_OFF;
} else if (val.toUpper() == QLatin1String("SQL_OPT_TRACE_ON")) {
} else if (val.toUpper() == "SQL_OPT_TRACE_ON"_L1) {
v = SQL_OPT_TRACE_ON;
} else {
qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\'';
continue;
}
r = SQLSetConnectAttr(hDbc, SQL_ATTR_TRACE, (SQLPOINTER) size_t(v), 0);
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_CONNECTION_POOLING")) {
if (val == QLatin1String("SQL_CP_OFF"))
} else if (opt.toUpper() == "SQL_ATTR_CONNECTION_POOLING"_L1) {
if (val == "SQL_CP_OFF"_L1)
v = SQL_CP_OFF;
else if (val.toUpper() == QLatin1String("SQL_CP_ONE_PER_DRIVER"))
else if (val.toUpper() == "SQL_CP_ONE_PER_DRIVER"_L1)
v = SQL_CP_ONE_PER_DRIVER;
else if (val.toUpper() == QLatin1String("SQL_CP_ONE_PER_HENV"))
else if (val.toUpper() == "SQL_CP_ONE_PER_HENV"_L1)
v = SQL_CP_ONE_PER_HENV;
else if (val.toUpper() == QLatin1String("SQL_CP_DEFAULT"))
else if (val.toUpper() == "SQL_CP_DEFAULT"_L1)
v = SQL_CP_DEFAULT;
else {
qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\'';
continue;
}
r = SQLSetConnectAttr(hDbc, SQL_ATTR_CONNECTION_POOLING, (SQLPOINTER) size_t(v), 0);
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_CP_MATCH")) {
if (val.toUpper() == QLatin1String("SQL_CP_STRICT_MATCH"))
} else if (opt.toUpper() == "SQL_ATTR_CP_MATCH"_L1) {
if (val.toUpper() == "SQL_CP_STRICT_MATCH"_L1)
v = SQL_CP_STRICT_MATCH;
else if (val.toUpper() == QLatin1String("SQL_CP_RELAXED_MATCH"))
else if (val.toUpper() == "SQL_CP_RELAXED_MATCH"_L1)
v = SQL_CP_RELAXED_MATCH;
else if (val.toUpper() == QLatin1String("SQL_CP_MATCH_DEFAULT"))
else if (val.toUpper() == "SQL_CP_MATCH_DEFAULT"_L1)
v = SQL_CP_MATCH_DEFAULT;
else {
qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\'';
continue;
}
r = SQLSetConnectAttr(hDbc, SQL_ATTR_CP_MATCH, (SQLPOINTER) size_t(v), 0);
} else if (opt.toUpper() == QLatin1String("SQL_ATTR_ODBC_VERSION")) {
} else if (opt.toUpper() == "SQL_ATTR_ODBC_VERSION"_L1) {
// Already handled in QODBCDriver::open()
continue;
} else {
@ -974,7 +976,7 @@ QODBCResult::~QODBCResult()
if (d->hStmt && d->isStmtHandleValid() && driver() && driver()->isOpen()) {
SQLRETURN r = SQLFreeHandle(SQL_HANDLE_STMT, d->hStmt);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver: Unable to free statement handle ")
qSqlWarning("QODBCDriver: Unable to free statement handle "_L1
+ QString::number(r), d);
}
}
@ -994,7 +996,7 @@ bool QODBCResult::reset (const QString& query)
if (d->hStmt && d->isStmtHandleValid()) {
r = SQLFreeHandle(SQL_HANDLE_STMT, d->hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCResult::reset: Unable to free statement handle"), d);
qSqlWarning("QODBCResult::reset: Unable to free statement handle"_L1, d);
return false;
}
}
@ -1002,7 +1004,7 @@ bool QODBCResult::reset (const QString& query)
d->dpDbc(),
&d->hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCResult::reset: Unable to allocate statement handle"), d);
qSqlWarning("QODBCResult::reset: Unable to allocate statement handle"_L1, d);
return false;
}
@ -1330,7 +1332,7 @@ int QODBCResult::numRowsAffected()
if (r == SQL_SUCCESS)
return affectedRowCount;
else
qSqlWarning(QLatin1String("QODBCResult::numRowsAffected: Unable to count affected rows"), d);
qSqlWarning("QODBCResult::numRowsAffected: Unable to count affected rows"_L1, d);
return -1;
}
@ -1345,7 +1347,7 @@ bool QODBCResult::prepare(const QString& query)
if (d->hStmt && d->isStmtHandleValid()) {
r = SQLFreeHandle(SQL_HANDLE_STMT, d->hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCResult::prepare: Unable to close statement"), d);
qSqlWarning("QODBCResult::prepare: Unable to close statement"_L1, d);
return false;
}
}
@ -1353,7 +1355,7 @@ bool QODBCResult::prepare(const QString& query)
d->dpDbc(),
&d->hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCResult::prepare: Unable to allocate statement handle"), d);
qSqlWarning("QODBCResult::prepare: Unable to allocate statement handle"_L1, d);
return false;
}
@ -1399,7 +1401,7 @@ bool QODBCResult::exec()
d->fieldCacheIdx = 0;
if (!d->hStmt) {
qSqlWarning(QLatin1String("QODBCResult::exec: No statement handle available"), d);
qSqlWarning("QODBCResult::exec: No statement handle available"_L1, d);
return false;
}
@ -1797,13 +1799,13 @@ QVariant QODBCResult::lastInsertId() const
switch (driver()->dbmsType()) {
case QSqlDriver::MSSqlServer:
case QSqlDriver::Sybase:
sql = QLatin1String("SELECT @@IDENTITY;");
sql = "SELECT @@IDENTITY;"_L1;
break;
case QSqlDriver::MySqlServer:
sql = QLatin1String("SELECT LAST_INSERT_ID();");
sql = "SELECT LAST_INSERT_ID();"_L1;
break;
case QSqlDriver::PostgreSQL:
sql = QLatin1String("SELECT lastval();");
sql = "SELECT lastval();"_L1;
break;
default:
break;
@ -1814,9 +1816,9 @@ QVariant QODBCResult::lastInsertId() const
if (qry.exec(sql) && qry.next())
return qry.value(0);
qSqlWarning(QLatin1String("QODBCResult::lastInsertId: Unable to get lastInsertId"), d);
qSqlWarning("QODBCResult::lastInsertId: Unable to get lastInsertId"_L1, d);
} else {
qSqlWarning(QLatin1String("QODBCResult::lastInsertId: not implemented for this DBMS"), d);
qSqlWarning("QODBCResult::lastInsertId: not implemented for this DBMS"_L1, d);
}
return QVariant();
@ -1970,7 +1972,7 @@ bool QODBCDriver::open(const QString & db,
SQL_NULL_HANDLE,
&d->hEnv);
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
qSqlWarning(QLatin1String("QODBCDriver::open: Unable to allocate environment"), d);
qSqlWarning("QODBCDriver::open: Unable to allocate environment"_L1, d);
setOpenError(true);
return false;
}
@ -1982,7 +1984,7 @@ bool QODBCDriver::open(const QString & db,
d->hEnv,
&d->hDbc);
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
qSqlWarning(QLatin1String("QODBCDriver::open: Unable to allocate connection"), d);
qSqlWarning("QODBCDriver::open: Unable to allocate connection"_L1, d);
setOpenError(true);
cleanup();
return false;
@ -1996,18 +1998,18 @@ bool QODBCDriver::open(const QString & db,
// Create the connection string
QString connQStr;
// support the "DRIVER={SQL SERVER};SERVER=blah" syntax
if (db.contains(QLatin1String(".dsn"), Qt::CaseInsensitive))
connQStr = QLatin1String("FILEDSN=") + db;
else if (db.contains(QLatin1String("DRIVER="), Qt::CaseInsensitive)
|| db.contains(QLatin1String("SERVER="), Qt::CaseInsensitive))
if (db.contains(".dsn"_L1, Qt::CaseInsensitive))
connQStr = "FILEDSN="_L1 + db;
else if (db.contains("DRIVER="_L1, Qt::CaseInsensitive)
|| db.contains("SERVER="_L1, Qt::CaseInsensitive))
connQStr = db;
else
connQStr = QLatin1String("DSN=") + db;
connQStr = "DSN="_L1 + db;
if (!user.isEmpty())
connQStr += QLatin1String(";UID=") + user;
connQStr += ";UID="_L1 + user;
if (!password.isEmpty())
connQStr += QLatin1String(";PWD=") + password;
connQStr += ";PWD="_L1 + password;
SQLSMALLINT cb;
QVarLengthArray<SQLTCHAR> connOut(1024);
@ -2046,7 +2048,7 @@ bool QODBCDriver::open(const QString & db,
setOpenError(false);
if (d->dbmsType == MSSqlServer) {
QSqlQuery i(createResult());
i.exec(QLatin1String("SET QUOTED_IDENTIFIER ON"));
i.exec("SET QUOTED_IDENTIFIER ON"_L1);
}
return true;
}
@ -2068,21 +2070,21 @@ void QODBCDriver::cleanup()
if (isOpen()) {
r = SQLDisconnect(d->hDbc);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver::disconnect: Unable to disconnect datasource"), d);
qSqlWarning("QODBCDriver::disconnect: Unable to disconnect datasource"_L1, d);
else
d->disconnectCount++;
}
r = SQLFreeHandle(SQL_HANDLE_DBC, d->hDbc);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver::cleanup: Unable to free connection handle"), d);
qSqlWarning("QODBCDriver::cleanup: Unable to free connection handle"_L1, d);
d->hDbc = 0;
}
if (d->hEnv) {
r = SQLFreeHandle(SQL_HANDLE_ENV, d->hEnv);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver::cleanup: Unable to free environment handle"), d);
qSqlWarning("QODBCDriver::cleanup: Unable to free environment handle"_L1, d);
d->hEnv = 0;
}
}
@ -2129,13 +2131,13 @@ void QODBCDriverPrivate::checkUnicode()
hDbc,
&hStmt);
r = SQLExecDirect(hStmt, toSQLTCHAR(QLatin1String("select 'test'")).data(), SQL_NTS);
r = SQLExecDirect(hStmt, toSQLTCHAR("select 'test'"_L1).data(), SQL_NTS);
if (r == SQL_SUCCESS) {
r = SQLFetch(hStmt);
if (r == SQL_SUCCESS) {
QVarLengthArray<SQLWCHAR> buffer(10);
r = SQLGetData(hStmt, 1, SQL_C_WCHAR, buffer.data(), buffer.size() * sizeof(SQLWCHAR), NULL);
if (r == SQL_SUCCESS && fromSQLTCHAR(buffer) == QLatin1String("test")) {
if (r == SQL_SUCCESS && fromSQLTCHAR(buffer) == "test"_L1) {
unicode = true;
}
}
@ -2167,7 +2169,7 @@ bool QODBCDriverPrivate::checkDriver() const
r = SQLGetFunctions(hDbc, reqFunc[i], &sup);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCDriver::checkDriver: Cannot get list of supported functions"), this);
qSqlWarning("QODBCDriver::checkDriver: Cannot get list of supported functions"_L1, this);
return false;
}
if (sup == SQL_FALSE) {
@ -2183,7 +2185,7 @@ bool QODBCDriverPrivate::checkDriver() const
r = SQLGetFunctions(hDbc, optFunc[i], &sup);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCDriver::checkDriver: Cannot get list of supported functions"), this);
qSqlWarning("QODBCDriver::checkDriver: Cannot get list of supported functions"_L1, this);
return false;
}
if (sup == SQL_FALSE) {
@ -2224,15 +2226,15 @@ void QODBCDriverPrivate::checkDBMS()
&t);
if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) {
const QString serverType = fromSQLTCHAR(serverString, t / sizeof(SQLTCHAR));
if (serverType.contains(QLatin1String("PostgreSQL"), Qt::CaseInsensitive))
if (serverType.contains("PostgreSQL"_L1, Qt::CaseInsensitive))
dbmsType = QSqlDriver::PostgreSQL;
else if (serverType.contains(QLatin1String("Oracle"), Qt::CaseInsensitive))
else if (serverType.contains("Oracle"_L1, Qt::CaseInsensitive))
dbmsType = QSqlDriver::Oracle;
else if (serverType.contains(QLatin1String("MySql"), Qt::CaseInsensitive))
else if (serverType.contains("MySql"_L1, Qt::CaseInsensitive))
dbmsType = QSqlDriver::MySqlServer;
else if (serverType.contains(QLatin1String("Microsoft SQL Server"), Qt::CaseInsensitive))
else if (serverType.contains("Microsoft SQL Server"_L1, Qt::CaseInsensitive))
dbmsType = QSqlDriver::MSSqlServer;
else if (serverType.contains(QLatin1String("Sybase"), Qt::CaseInsensitive))
else if (serverType.contains("Sybase"_L1, Qt::CaseInsensitive))
dbmsType = QSqlDriver::Sybase;
}
r = SQLGetInfo(hDbc,
@ -2242,7 +2244,7 @@ void QODBCDriverPrivate::checkDBMS()
&t);
if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) {
const QString serverType = fromSQLTCHAR(serverString, t / sizeof(SQLTCHAR));
isFreeTDSDriver = serverType.contains(QLatin1String("tdsodbc"), Qt::CaseInsensitive);
isFreeTDSDriver = serverType.contains("tdsodbc"_L1, Qt::CaseInsensitive);
unicode = unicode && !isFreeTDSDriver;
}
}
@ -2381,7 +2383,7 @@ QStringList QODBCDriver::tables(QSql::TableType type) const
d->hDbc,
&hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCDriver::tables: Unable to allocate handle"), d);
qSqlWarning("QODBCDriver::tables: Unable to allocate handle"_L1, d);
return tl;
}
r = SQLSetStmtAttr(hStmt,
@ -2390,11 +2392,11 @@ QStringList QODBCDriver::tables(QSql::TableType type) const
SQL_IS_UINTEGER);
QStringList tableType;
if (type & QSql::Tables)
tableType += QLatin1String("TABLE");
tableType += "TABLE"_L1;
if (type & QSql::Views)
tableType += QLatin1String("VIEW");
tableType += "VIEW"_L1;
if (type & QSql::SystemTables)
tableType += QLatin1String("SYSTEM TABLE");
tableType += "SYSTEM TABLE"_L1;
if (tableType.isEmpty())
return tl;
@ -2411,7 +2413,7 @@ QStringList QODBCDriver::tables(QSql::TableType type) const
joinedTableTypeString.length() /* characters, not bytes */);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver::tables Unable to execute table list"), d);
qSqlWarning("QODBCDriver::tables Unable to execute table list"_L1, d);
if (d->hasSQLFetchScroll)
r = SQLFetchScroll(hStmt,
@ -2439,7 +2441,7 @@ QStringList QODBCDriver::tables(QSql::TableType type) const
r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
if (r!= SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver: Unable to free statement handle") + QString::number(r), d);
qSqlWarning("QODBCDriver: Unable to free statement handle"_L1 + QString::number(r), d);
return tl;
}
@ -2457,7 +2459,7 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const
d->hDbc,
&hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCDriver::primaryIndex: Unable to list primary key"), d);
qSqlWarning("QODBCDriver::primaryIndex: Unable to list primary key"_L1, d);
return index;
}
QString catalog, schema, table;
@ -2506,7 +2508,7 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const
SQL_NULLABLE);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCDriver::primaryIndex: Unable to execute primary key list"), d);
qSqlWarning("QODBCDriver::primaryIndex: Unable to execute primary key list"_L1, d);
} else {
usingSpecialColumns = true;
}
@ -2543,7 +2545,7 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const
}
r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
if (r!= SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver: Unable to free statement handle") + QString::number(r), d);
qSqlWarning("QODBCDriver: Unable to free statement handle"_L1 + QString::number(r), d);
return index;
}
@ -2577,7 +2579,7 @@ QSqlRecord QODBCDriver::record(const QString& tablename) const
d->hDbc,
&hStmt);
if (r != SQL_SUCCESS) {
qSqlWarning(QLatin1String("QODBCDriver::record: Unable to allocate handle"), d);
qSqlWarning("QODBCDriver::record: Unable to allocate handle"_L1, d);
return fil;
}
r = SQLSetStmtAttr(hStmt,
@ -2594,7 +2596,7 @@ QSqlRecord QODBCDriver::record(const QString& tablename) const
NULL,
0);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver::record: Unable to execute column list"), d);
qSqlWarning("QODBCDriver::record: Unable to execute column list"_L1, d);
if (d->hasSQLFetchScroll)
r = SQLFetchScroll(hStmt,
@ -2618,7 +2620,7 @@ QSqlRecord QODBCDriver::record(const QString& tablename) const
r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
if (r!= SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver: Unable to free statement handle ") + QString::number(r), d);
qSqlWarning("QODBCDriver: Unable to free statement handle "_L1 + QString::number(r), d);
return fil;
}
@ -2628,23 +2630,23 @@ QString QODBCDriver::formatValue(const QSqlField &field,
{
QString r;
if (field.isNull()) {
r = QLatin1String("NULL");
r = "NULL"_L1;
} else if (field.metaType().id() == QMetaType::QDateTime) {
// Use an escape sequence for the datetime fields
if (field.value().toDateTime().isValid()){
QDate dt = field.value().toDateTime().date();
QTime tm = field.value().toDateTime().time();
// Dateformat has to be "yyyy-MM-dd hh:mm:ss", with leading zeroes if month or day < 10
r = QLatin1String("{ ts '") +
r = "{ ts '"_L1 +
QString::number(dt.year()) + u'-' +
QString::number(dt.month()).rightJustified(2, u'0', true) +
u'-' +
QString::number(dt.day()).rightJustified(2, u'0', true) +
u' ' +
tm.toString() +
QLatin1String("' }");
"' }"_L1;
} else
r = QLatin1String("NULL");
r = "NULL"_L1;
} else if (field.metaType().id() == QMetaType::QByteArray) {
QByteArray ba = field.value().toByteArray();
QString res;
@ -2654,7 +2656,7 @@ QString QODBCDriver::formatValue(const QSqlField &field,
res += QLatin1Char(hexchars[s >> 4]);
res += QLatin1Char(hexchars[s & 0x0f]);
}
r = QLatin1String("0x") + res;
r = "0x"_L1 + res;
} else {
r = QSqlDriver::formatValue(field, trimStrings);
}

View File

@ -43,6 +43,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
class QPSQLDriverPlugin : public QSqlDriverPlugin
{
Q_OBJECT
@ -61,7 +63,7 @@ QPSQLDriverPlugin::QPSQLDriverPlugin()
QSqlDriver* QPSQLDriverPlugin::create(const QString &name)
{
if (name == QLatin1String("QPSQL"))
if (name == "QPSQL"_L1)
return new QPSQLDriver;
return nullptr;
}

View File

@ -193,7 +193,7 @@ void QPSQLDriverPrivate::appendTables(QStringList &tl, QSqlQuery &t, QChar type)
t.exec(query);
while (t.next()) {
QString schema = t.value(1).toString();
if (schema.isEmpty() || schema == QLatin1String("public"))
if (schema.isEmpty() || schema == "public"_L1)
tl.append(t.value(0).toString());
else
tl.append(t.value(0).toString().prepend(u'.').prepend(schema));
@ -316,7 +316,7 @@ static QSqlError qMakeError(const QString &err, QSqlError::ErrorType type,
errorCode = QString::fromLatin1(PQresultErrorField(result, PG_DIAG_SQLSTATE));
msg += QString::fromLatin1("(%1)").arg(errorCode);
}
return QSqlError(QLatin1String("QPSQL: ") + err, msg, type, errorCode);
return QSqlError("QPSQL: "_L1 + err, msg, type, errorCode);
}
bool QPSQLResultPrivate::processResults()
@ -863,7 +863,7 @@ static QString qCreateParamString(const QList<QVariant> &boundValues, const QSql
else
f.setValue(val);
if (!params.isNull())
params.append(QLatin1String(", "));
params.append(", "_L1);
params.append(driver->formatValue(f));
}
return params;
@ -983,7 +983,7 @@ void QPSQLDriverPrivate::detectBackslashEscape()
PGresult *result = exec(QStringLiteral("SELECT '\\\\' x"));
int status = PQresultStatus(result);
if (status == PGRES_COMMAND_OK || status == PGRES_TUPLES_OK)
if (QString::fromLatin1(PQgetvalue(result, 0, 0)) == QLatin1String("\\"))
if (QString::fromLatin1(PQgetvalue(result, 0, 0)) == "\\"_L1)
hasBackslashEscape = true;
PQclear(result);
}
@ -1095,9 +1095,9 @@ QPSQLDriver::Protocol QPSQLDriverPrivate::getPSQLVersion()
QPSQLDriver::Protocol clientVersion =
#if defined(PG_MAJORVERSION)
qFindPSQLVersion(QLatin1String(PG_MAJORVERSION));
qFindPSQLVersion(PG_MAJORVERSION ""_L1);
#elif defined(PG_VERSION)
qFindPSQLVersion(QLatin1String(PG_VERSION));
qFindPSQLVersion(PG_VERSION ""_L1);
#else
QPSQLDriver::VersionUnknown;
#endif
@ -1185,8 +1185,8 @@ bool QPSQLDriver::hasFeature(DriverFeature f) const
*/
static QString qQuote(QString s)
{
s.replace(u'\\', QLatin1String("\\\\"));
s.replace(u'\'', QLatin1String("\\'"));
s.replace(u'\\', "\\\\"_L1);
s.replace(u'\'', "\\'"_L1);
s.append(u'\'').prepend(u'\'');
return s;
}
@ -1202,15 +1202,15 @@ bool QPSQLDriver::open(const QString &db,
close();
QString connectString;
if (!host.isEmpty())
connectString.append(QLatin1String("host=")).append(qQuote(host));
connectString.append("host="_L1).append(qQuote(host));
if (!db.isEmpty())
connectString.append(QLatin1String(" dbname=")).append(qQuote(db));
connectString.append(" dbname="_L1).append(qQuote(db));
if (!user.isEmpty())
connectString.append(QLatin1String(" user=")).append(qQuote(user));
connectString.append(" user="_L1).append(qQuote(user));
if (!password.isEmpty())
connectString.append(QLatin1String(" password=")).append(qQuote(password));
connectString.append(" password="_L1).append(qQuote(password));
if (port != -1)
connectString.append(QLatin1String(" port=")).append(qQuote(QString::number(port)));
connectString.append(" port="_L1).append(qQuote(QString::number(port)));
// add any connect options - the server will handle error detection
if (!connOpts.isEmpty()) {
@ -1504,7 +1504,7 @@ QString QPSQLDriver::formatValue(const QSqlField &field, bool trimStrings) const
case QMetaType::QString:
r = QSqlDriver::formatValue(field, trimStrings);
if (d->hasBackslashEscape)
r.replace(u'\\', QLatin1String("\\\\"));
r.replace(u'\\', "\\\\"_L1);
break;
case QMetaType::Bool:
if (field.value().toBool())
@ -1551,9 +1551,9 @@ QString QPSQLDriver::escapeIdentifier(const QString &identifier, IdentifierType)
{
QString res = identifier;
if (!identifier.isEmpty() && !identifier.startsWith(u'"') && !identifier.endsWith(u'"') ) {
res.replace(u'"', QLatin1String("\"\""));
res.replace(u'"', "\"\""_L1);
res.prepend(u'"').append(u'"');
res.replace(u'.', QLatin1String("\".\""));
res.replace(u'.', "\".\""_L1);
}
return res;
}

View File

@ -74,6 +74,8 @@ Q_DECLARE_METATYPE(sqlite3_stmt*)
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
static QString _q_escapeIdentifier(const QString &identifier, QSqlDriver::IdentifierType type)
{
QString res = identifier;
@ -82,10 +84,10 @@ static QString _q_escapeIdentifier(const QString &identifier, QSqlDriver::Identi
if (identifier.contains(u'[') && identifier.contains(u']'))
return res;
if (!identifier.isEmpty() && !identifier.startsWith(u'"') && !identifier.endsWith(u'"')) {
res.replace(u'"', QLatin1String("\"\""));
res.replace(u'"', "\"\""_L1);
res.prepend(u'"').append(u'"');
if (type == QSqlDriver::TableName)
res.replace(u'.', QLatin1String("\".\""));
res.replace(u'.', "\".\""_L1);
}
return res;
}
@ -94,18 +96,16 @@ static int qGetColumnType(const QString &tpName)
{
const QString typeName = tpName.toLower();
if (typeName == QLatin1String("integer")
|| typeName == QLatin1String("int"))
if (typeName == "integer"_L1 || typeName == "int"_L1)
return QMetaType::Int;
if (typeName == QLatin1String("double")
|| typeName == QLatin1String("float")
|| typeName == QLatin1String("real")
|| typeName.startsWith(QLatin1String("numeric")))
if (typeName == "double"_L1
|| typeName == "float"_L1
|| typeName == "real"_L1
|| typeName.startsWith("numeric"_L1))
return QMetaType::Double;
if (typeName == QLatin1String("blob"))
if (typeName == "blob"_L1)
return QMetaType::QByteArray;
if (typeName == QLatin1String("boolean")
|| typeName == QLatin1String("bool"))
if (typeName == "boolean"_L1 || typeName == "bool"_L1)
return QMetaType::Bool;
return QMetaType::QString;
}
@ -728,7 +728,7 @@ bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, c
bool openUriOption = false;
bool useExtendedResultCodes = true;
#if QT_CONFIG(regularexpression)
static const QLatin1String regexpConnectOption = QLatin1String("QSQLITE_ENABLE_REGEXP");
static const auto regexpConnectOption = "QSQLITE_ENABLE_REGEXP"_L1;
bool defineRegexp = false;
int regexpCacheSize = 25;
#endif
@ -736,7 +736,7 @@ bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, c
const auto opts = QStringView{conOpts}.split(u';');
for (auto option : opts) {
option = option.trimmed();
if (option.startsWith(QLatin1String("QSQLITE_BUSY_TIMEOUT"))) {
if (option.startsWith("QSQLITE_BUSY_TIMEOUT"_L1)) {
option = option.mid(20).trimmed();
if (option.startsWith(u'=')) {
bool ok;
@ -744,13 +744,13 @@ bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, c
if (ok)
timeOut = nt;
}
} else if (option == QLatin1String("QSQLITE_OPEN_READONLY")) {
} else if (option == "QSQLITE_OPEN_READONLY"_L1) {
openReadOnlyOption = true;
} else if (option == QLatin1String("QSQLITE_OPEN_URI")) {
} else if (option == "QSQLITE_OPEN_URI"_L1) {
openUriOption = true;
} else if (option == QLatin1String("QSQLITE_ENABLE_SHARED_CACHE")) {
} else if (option == "QSQLITE_ENABLE_SHARED_CACHE"_L1) {
sharedCache = true;
} else if (option == QLatin1String("QSQLITE_NO_USE_EXTENDED_RESULT_CODES")) {
} else if (option == "QSQLITE_NO_USE_EXTENDED_RESULT_CODES"_L1) {
useExtendedResultCodes = false;
}
#if QT_CONFIG(regularexpression)
@ -841,7 +841,7 @@ bool QSQLiteDriver::beginTransaction()
return false;
QSqlQuery q(createResult());
if (!q.exec(QLatin1String("BEGIN"))) {
if (!q.exec("BEGIN"_L1)) {
setLastError(QSqlError(tr("Unable to begin transaction"),
q.lastError().databaseText(), QSqlError::TransactionError));
return false;
@ -856,7 +856,7 @@ bool QSQLiteDriver::commitTransaction()
return false;
QSqlQuery q(createResult());
if (!q.exec(QLatin1String("COMMIT"))) {
if (!q.exec("COMMIT"_L1)) {
setLastError(QSqlError(tr("Unable to commit transaction"),
q.lastError().databaseText(), QSqlError::TransactionError));
return false;
@ -871,7 +871,7 @@ bool QSQLiteDriver::rollbackTransaction()
return false;
QSqlQuery q(createResult());
if (!q.exec(QLatin1String("ROLLBACK"))) {
if (!q.exec("ROLLBACK"_L1)) {
setLastError(QSqlError(tr("Unable to rollback transaction"),
q.lastError().databaseText(), QSqlError::TransactionError));
return false;
@ -889,14 +889,14 @@ QStringList QSQLiteDriver::tables(QSql::TableType type) const
QSqlQuery q(createResult());
q.setForwardOnly(true);
QString sql = QLatin1String("SELECT name FROM sqlite_master WHERE %1 "
"UNION ALL SELECT name FROM sqlite_temp_master WHERE %1");
QString sql = "SELECT name FROM sqlite_master WHERE %1 "
"UNION ALL SELECT name FROM sqlite_temp_master WHERE %1"_L1;
if ((type & QSql::Tables) && (type & QSql::Views))
sql = sql.arg(QLatin1String("type='table' OR type='view'"));
sql = sql.arg("type='table' OR type='view'"_L1);
else if (type & QSql::Tables)
sql = sql.arg(QLatin1String("type='table'"));
sql = sql.arg("type='table'"_L1);
else if (type & QSql::Views)
sql = sql.arg(QLatin1String("type='view'"));
sql = sql.arg("type='view'"_L1);
else
sql.clear();
@ -907,7 +907,7 @@ QStringList QSQLiteDriver::tables(QSql::TableType type) const
if (type & QSql::SystemTables) {
// there are no internal tables beside this one:
res.append(QLatin1String("sqlite_master"));
res.append("sqlite_master"_L1);
}
return res;
@ -933,7 +933,7 @@ static QSqlIndex qGetTableInfo(QSqlQuery &q, const QString &tableName, bool only
}
}
}
q.exec(QLatin1String("PRAGMA ") + schema + QLatin1String("table_info (") +
q.exec("PRAGMA "_L1 + schema + "table_info ("_L1 +
_q_escapeIdentifier(table, QSqlDriver::TableName) + u')');
QSqlIndex ind;
while (q.next()) {
@ -949,7 +949,7 @@ static QSqlIndex qGetTableInfo(QSqlQuery &q, const QString &tableName, bool only
}
QSqlField fld(q.value(1).toString(), QMetaType(qGetColumnType(typeName)), tableName);
if (isPk && (typeName == QLatin1String("integer")))
if (isPk && (typeName == "integer"_L1))
// INTEGER PRIMARY KEY fields are auto-generated in sqlite
// INT PRIMARY KEY is not the same as INTEGER PRIMARY KEY!
fld.setAutoValue(true);

View File

@ -43,6 +43,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
class QSQLiteDriverPlugin : public QSqlDriverPlugin
{
Q_OBJECT
@ -61,7 +63,7 @@ QSQLiteDriverPlugin::QSQLiteDriverPlugin()
QSqlDriver* QSQLiteDriverPlugin::create(const QString &name)
{
if (name == QLatin1String("QSQLITE")) {
if (name == "QSQLITE"_L1) {
QSQLiteDriver* driver = new QSQLiteDriver();
return driver;
}

View File

@ -55,9 +55,10 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
(QSqlDriverFactoryInterface_iid,
QLatin1String("/sqldrivers")))
(QSqlDriverFactoryInterface_iid, "/sqldrivers"_L1))
const char *QSqlDatabase::defaultConnection = const_cast<char *>("qt_sql_default_connection");

View File

@ -50,6 +50,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
static QString prepareIdentifier(const QString &identifier,
QSqlDriver::IdentifierType type, const QSqlDriver *driver)
{
@ -487,12 +489,12 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
case SelectStatement:
for (i = 0; i < rec.count(); ++i) {
if (rec.isGenerated(i))
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(QLatin1String(", "));
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(", "_L1);
}
if (s.isEmpty())
return s;
s.chop(2);
s = QLatin1String("SELECT ") + s + QLatin1String(" FROM ") + tableNameString;
s = "SELECT "_L1 + s + " FROM "_L1 + tableNameString;
break;
case WhereStatement:
{
@ -501,20 +503,20 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
for (int i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i))
continue;
s.append(s.isEmpty() ? QLatin1String("WHERE ") : QLatin1String(" AND "));
s.append(s.isEmpty() ? "WHERE "_L1 : " AND "_L1);
s.append(tableNamePrefix);
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this));
if (rec.isNull(i))
s.append(QLatin1String(" IS NULL"));
s.append(" IS NULL"_L1);
else if (preparedStatement)
s.append(QLatin1String(" = ?"));
s.append(" = ?"_L1);
else
s.append(QLatin1String(" = ")).append(formatValue(rec.field(i)));
s.append(" = "_L1).append(formatValue(rec.field(i)));
}
break;
}
case UpdateStatement:
s = s + QLatin1String("UPDATE ") + tableNameString + QLatin1String(" SET ");
s = s + "UPDATE "_L1 + tableNameString + " SET "_L1;
for (i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i))
continue;
@ -523,35 +525,35 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
s.append(u'?');
else
s.append(formatValue(rec.field(i)));
s.append(QLatin1String(", "));
s.append(", "_L1);
}
if (s.endsWith(QLatin1String(", ")))
if (s.endsWith(", "_L1))
s.chop(2);
else
s.clear();
break;
case DeleteStatement:
s = s + QLatin1String("DELETE FROM ") + tableNameString;
s = s + "DELETE FROM "_L1 + tableNameString;
break;
case InsertStatement: {
s = s + QLatin1String("INSERT INTO ") + tableNameString + QLatin1String(" (");
s = s + "INSERT INTO "_L1 + tableNameString + " ("_L1;
QString vals;
for (i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i))
continue;
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(QLatin1String(", "));
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(", "_L1);
if (preparedStatement)
vals.append(u'?');
else
vals.append(formatValue(rec.field(i)));
vals.append(QLatin1String(", "));
vals.append(", "_L1);
}
if (vals.isEmpty()) {
s.clear();
} else {
vals.chop(2); // remove trailing comma
s[s.length() - 2] = u')';
s.append(QLatin1String("VALUES (")).append(vals).append(u')');
s.append("VALUES ("_L1).append(vals).append(u')');
}
break; }
}
@ -593,7 +595,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
*/
QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const
{
const QLatin1String nullTxt("NULL");
const auto nullTxt = "NULL"_L1;
QString r;
if (field.isNull())
@ -603,7 +605,7 @@ QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const
case QMetaType::Int:
case QMetaType::UInt:
if (field.value().userType() == QMetaType::Bool)
r = field.value().toBool() ? QLatin1String("1") : QLatin1String("0");
r = field.value().toBool() ? "1"_L1 : "0"_L1;
else
r = field.value().toString();
break;
@ -638,7 +640,7 @@ QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const
result.truncate(end);
}
/* escape the "'" character */
result.replace(u'\'', QLatin1String("''"));
result.replace(u'\'', "''"_L1);
r = u'\'' + result + u'\'';
break;
}

View File

@ -42,6 +42,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug dbg, const QSqlError &s)
{
@ -243,7 +245,7 @@ QString QSqlError::nativeErrorCode() const
QString QSqlError::text() const
{
QString result = d->databaseError;
if (!d->databaseError.isEmpty() && !d->driverError.isEmpty() && !d->databaseError.endsWith(QLatin1String("\n")))
if (!d->databaseError.isEmpty() && !d->driverError.isEmpty() && !d->databaseError.endsWith("\n"_L1))
result += u' ';
result += d->driverError;
return result;

View File

@ -44,6 +44,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
/*!
\class QSqlIndex
\brief The QSqlIndex class provides functions to manipulate and
@ -176,7 +178,7 @@ QString QSqlIndex::createField(int i, const QString& prefix, bool verbose) const
f += prefix + u'.';
f += field(i).name();
if (verbose)
f += u' ' + QString((isDescending(i) ? QLatin1String("DESC") : QLatin1String("ASC")));
f += u' ' + QString((isDescending(i) ? "DESC"_L1 : "ASC"_L1));
return f;
}

View File

@ -55,6 +55,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
QString QSqlResultPrivate::holderAt(int index) const
{
return holders.size() > index ? holders.at(index).holderName : fieldSerial(index);
@ -62,7 +64,7 @@ QString QSqlResultPrivate::holderAt(int index) const
QString QSqlResultPrivate::fieldSerial(int i) const
{
return QString(QLatin1String(":%1")).arg(i);
return QString(":%1"_L1).arg(i);
}
static bool qIsAlnum(QChar ch)
@ -118,7 +120,7 @@ QString QSqlResultPrivate::namedToPositionalBinding(const QString &query)
// caller to make sure that it is not using named bindings for the wrong
// parts of the query since Interbase uses them literally
if (sqldriver->dbmsType() == QSqlDriver::Interbase &&
query.trimmed().startsWith(QLatin1String("EXECUTE BLOCK"), Qt::CaseInsensitive))
query.trimmed().startsWith("EXECUTE BLOCK"_L1, Qt::CaseInsensitive))
return query;
int n = query.size();
@ -667,7 +669,7 @@ bool QSqlResult::exec()
for (i = d->holders.count() - 1; i >= 0; --i) {
holder = d->holders.at(i).holderName;
val = d->values.value(d->indexes.value(holder).value(0,-1));
QSqlField f(QLatin1String(""), val.metaType());
QSqlField f(""_L1, val.metaType());
if (QSqlResultPrivate::isVariantNull(val))
f.setValue(QVariant());
else
@ -684,7 +686,7 @@ bool QSqlResult::exec()
if (i == -1)
continue;
QVariant var = d->values.value(idx);
QSqlField f(QLatin1String(""), var.metaType());
QSqlField f(""_L1, var.metaType());
if (QSqlResultPrivate::isVariantNull(var))
f.clear();
else

View File

@ -46,6 +46,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
#define QSQL_PREFETCH 255
void QSqlQueryModelPrivate::prefetch(int limit)
@ -463,8 +465,7 @@ void QSqlQueryModel::setQuery(QSqlQuery &&query)
d->atEnd = true;
if (d->query.isForwardOnly()) {
d->error = QSqlError(QLatin1String("Forward-only queries "
"cannot be used in a data model"),
d->error = QSqlError("Forward-only queries cannot be used in a data model"_L1,
QString(), QSqlError::ConnectionError);
endResetModel();
return;

View File

@ -55,10 +55,12 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
class QSqlRelationalTableModelSql: public QSqlTableModelSql
{
public:
inline const static QString relTablePrefix(int i) { return QString::number(i).prepend(QLatin1String("relTblAl_")); }
inline const static QString relTablePrefix(int i) { return QString::number(i).prepend("relTblAl_"_L1); }
};
typedef QSqlRelationalTableModelSql Sql;

View File

@ -53,6 +53,8 @@
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
typedef QSqlTableModelSql Sql;
QSqlTableModelPrivate::~QSqlTableModelPrivate()
@ -333,7 +335,7 @@ void QSqlTableModel::setTable(const QString &tableName)
d->initRecordAndPrimaryIndex();
if (d->rec.count() == 0)
d->error = QSqlError(QLatin1String("Unable to find table ") + d->tableName, QString(),
d->error = QSqlError("Unable to find table "_L1 + d->tableName, QString(),
QSqlError::StatementError);
// Remember the auto index column if there is one now.
@ -493,9 +495,9 @@ QVariant QSqlTableModel::headerData(int section, Qt::Orientation orientation, in
if (orientation == Qt::Vertical && role == Qt::DisplayRole) {
const QSqlTableModelPrivate::Op op = d->cache.value(section).op();
if (op == QSqlTableModelPrivate::Insert)
return QLatin1String("*");
return "*"_L1;
else if (op == QSqlTableModelPrivate::Delete)
return QLatin1String("!");
return "!"_L1;
}
return QSqlQueryModel::headerData(section, orientation, role);
}
@ -657,8 +659,7 @@ bool QSqlTableModel::updateRowInTable(int row, const QSqlRecord &values)
whereValues, prepStatement);
if (stmt.isEmpty() || where.isEmpty() || row < 0 || row >= rowCount()) {
d->error = QSqlError(QLatin1String("No Fields to update"), QString(),
QSqlError::StatementError);
d->error = QSqlError("No Fields to update"_L1, QString(), QSqlError::StatementError);
return false;
}
@ -690,8 +691,7 @@ bool QSqlTableModel::insertRowIntoTable(const QSqlRecord &values)
rec, prepStatement);
if (stmt.isEmpty()) {
d->error = QSqlError(QLatin1String("No Fields to update"), QString(),
QSqlError::StatementError);
d->error = QSqlError("No Fields to update"_L1, QString(), QSqlError::StatementError);
return false;
}
@ -727,8 +727,7 @@ bool QSqlTableModel::deleteRowFromTable(int row)
prepStatement);
if (stmt.isEmpty() || where.isEmpty()) {
d->error = QSqlError(QLatin1String("Unable to delete row"), QString(),
QSqlError::StatementError);
d->error = QSqlError("Unable to delete row"_L1, QString(), QSqlError::StatementError);
return false;
}
@ -1029,12 +1028,11 @@ QString QSqlTableModel::selectStatement() const
{
Q_D(const QSqlTableModel);
if (d->tableName.isEmpty()) {
d->error = QSqlError(QLatin1String("No table name given"), QString(),
QSqlError::StatementError);
d->error = QSqlError("No table name given"_L1, QString(), QSqlError::StatementError);
return QString();
}
if (d->rec.isEmpty()) {
d->error = QSqlError(QLatin1String("Unable to find table ") + d->tableName, QString(),
d->error = QSqlError("Unable to find table "_L1 + d->tableName, QString(),
QSqlError::StatementError);
return QString();
}
@ -1044,7 +1042,7 @@ QString QSqlTableModel::selectStatement() const
d->rec,
false);
if (stmt.isEmpty()) {
d->error = QSqlError(QLatin1String("Unable to select fields from table ") + d->tableName,
d->error = QSqlError("Unable to select fields from table "_L1 + d->tableName,
QString(), QSqlError::StatementError);
return stmt;
}