Changeset 561 for trunk/src/sql/models/qsqltablemodel.cpp
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/sql/models/qsqltablemodel.cpp
r2 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information ([email protected]) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation ([email protected]) 5 6 ** 6 7 ** This file is part of the QtSql module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 24 ** In addition, as a special exception, Nokia gives you certain additional 25 ** rights. These rights are described in the Nokia Qt LGPL Exception 26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you 37 ** @nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 99 99 int QSqlTableModelPrivate::nameToIndex(const QString &name) const 100 100 { 101 return rec.indexOf(name); 101 QString fieldname = name; 102 if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName)) 103 fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName); 104 return rec.indexOf(fieldname); 102 105 } 103 106 … … 203 206 } 204 207 for (i = 0; i < whereValues.count(); ++i) { 205 if (whereValues.isGenerated(i) )208 if (whereValues.isGenerated(i)) 206 209 editQuery.addBindValue(whereValues.value(i)); 207 210 } … … 368 371 Q_D(QSqlTableModel); 369 372 clear(); 370 if(d->db.tables().contains(tableName.toUpper())) 371 d->tableName = tableName.toUpper(); 372 else 373 d->tableName = tableName; 373 d->tableName = tableName; 374 374 d->initRecordAndPrimaryIndex(); 375 375 d->initColOffsets(d->rec.count()); … … 407 407 setQuery(qu); 408 408 409 if (!qu.isActive() ) {409 if (!qu.isActive()) { 410 410 // something went wrong - revert to non-select state 411 411 d->initRecordAndPrimaryIndex(); … … 539 539 if (isOk) 540 540 select(); 541 541 542 break; } 542 543 case OnRowChange: … … 559 560 row.op = QSqlTableModelPrivate::Update; 560 561 row.rec = d->rec; 561 562 row.primaryValues = d->primaryValues(indexInQuery(index).row()); 562 563 } 563 564 row.rec.setValue(index.column(), value); … … 669 670 emit beforeDelete(row); 670 671 671 QSqlRecord rec =d->primaryValues(row);672 d->primaryValues(row); 672 673 bool prepStatement = d->db.driver()->hasFeature(QSqlDriver::PreparedQueries); 673 674 QString stmt = d->db.driver()->sqlStatement(QSqlDriver::DeleteStatement, … … 677 678 QString where = d->db.driver()->sqlStatement(QSqlDriver::WhereStatement, 678 679 d->tableName, 679 rec,680 , 680 681 prepStatement); 681 682 … … 687 688 stmt.append(QLatin1Char(' ')).append(where); 688 689 689 return d->exec(stmt, prepStatement, rec);690 return d->exec(stmt, prepStatement, ); 690 691 } 691 692 … … 977 978 return s; 978 979 979 QString table = d->db.driver()->escapeIdentifier(d->tableName, QSqlDriver::TableName); 980 QString table = d->tableName; 981 //we can safely escape the field because it would have been obtained from the database 982 //and have the correct case 980 983 QString field = d->db.driver()->escapeIdentifier(f.name(), QSqlDriver::FieldName); 981 984 s.append(QLatin1String("ORDER BY ")).append(table).append(QLatin1Char('.')).append(field); … … 1097 1100 else { 1098 1101 d->cache[idx].op = QSqlTableModelPrivate::Delete; 1102 1099 1103 emit headerDataChanged(Qt::Vertical, idx, idx); 1100 1104 } … … 1318 1322 mrow.primaryValues = d->primaryValues(indexInQuery(createIndex(row, 0)).row()); 1319 1323 } 1324 1320 1325 for (int i = 0; i < record.count(); ++i) { 1321 int idx = mrow.rec.indexOf(record.fieldName(i)); 1326 fieldName = record.fieldName(i); 1327 if (d->db.driver()->isIdentifierEscaped(fieldName, QSqlDriver::FieldName)) 1328 fieldName = d->db.driver()->stripDelimiters(fieldName, QSqlDriver::FieldName); 1329 int idx = mrow.rec.indexOf(fieldName); 1322 1330 if (idx == -1) 1323 1331 isOk = false;
Note:
See TracChangeset
for help on using the changeset viewer.