From 3ca2eea00d53ae1f75cead8dde763cb8e348d630 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Thu, 18 Feb 2016 23:04:57 +0100 Subject: QSqlDriver:sqlStatement: respect generated flags for WHERE too Change-Id: I90034cd1a8dc0473c36d788c6737493a51641b02 Reviewed-by: Andy Shaw --- src/sql/kernel/qsqldriver.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/sql') diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp index d53331fb10..ac51941f43 100644 --- a/src/sql/kernel/qsqldriver.cpp +++ b/src/sql/kernel/qsqldriver.cpp @@ -466,6 +466,9 @@ QString QSqlDriver::stripDelimiters(const QString &identifier, IdentifierType ty with the values from \a rec. If \a preparedStatement is true, the string will contain placeholders instead of values. + The generated flag in each field of \a rec determines whether the + field is included in the generated statement. + This method can be used to manipulate tables without having to worry about database-dependent SQL dialects. For non-prepared statements, the values will be properly escaped. @@ -493,7 +496,9 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName, ? QString() : prepareIdentifier(tableName, QSqlDriver::TableName, this) + QLatin1Char('.'); for (int i = 0; i < rec.count(); ++i) { - s.append(QLatin1String(i? " AND " : "WHERE ")); + if (!rec.isGenerated(i)) + continue; + s.append(s.isEmpty() ? QLatin1String("WHERE ") : QLatin1String(" AND ")); s.append(tableNamePrefix); s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)); if (rec.isNull(i)) -- cgit v1.2.3