Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/sql/models/qsqltablemodel.cpp

    r2 r561  
    22**
    33** 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])
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    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.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you
     37** @nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    9999int QSqlTableModelPrivate::nameToIndex(const QString &name) const
    100100{
    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);
    102105}
    103106
     
    203206        }
    204207        for (i = 0; i < whereValues.count(); ++i) {
    205             if (whereValues.isGenerated(i))
     208            if (whereValues.isGenerated(i))
    206209                editQuery.addBindValue(whereValues.value(i));
    207210        }
     
    368371    Q_D(QSqlTableModel);
    369372    clear();
    370     if(d->db.tables().contains(tableName.toUpper()))
    371         d->tableName = tableName.toUpper();
    372     else
    373         d->tableName = tableName;
     373    d->tableName = tableName;
    374374    d->initRecordAndPrimaryIndex();
    375375    d->initColOffsets(d->rec.count());
     
    407407    setQuery(qu);
    408408
    409     if (!qu.isActive()) {
     409    if (!qu.isActive()) {
    410410        // something went wrong - revert to non-select state
    411411        d->initRecordAndPrimaryIndex();
     
    539539        if (isOk)
    540540            select();
     541
    541542        break; }
    542543    case OnRowChange:
     
    559560            row.op = QSqlTableModelPrivate::Update;
    560561            row.rec = d->rec;
    561                         row.primaryValues = d->primaryValues(indexInQuery(index).row());
     562row.primaryValues = d->primaryValues(indexInQuery(index).row());
    562563        }
    563564        row.rec.setValue(index.column(), value);
     
    669670    emit beforeDelete(row);
    670671
    671     QSqlRecord rec = d->primaryValues(row);
     672    d->primaryValues(row);
    672673    bool prepStatement = d->db.driver()->hasFeature(QSqlDriver::PreparedQueries);
    673674    QString stmt = d->db.driver()->sqlStatement(QSqlDriver::DeleteStatement,
     
    677678    QString where = d->db.driver()->sqlStatement(QSqlDriver::WhereStatement,
    678679                                                 d->tableName,
    679                                                  rec,
     680                                                 ,
    680681                                                 prepStatement);
    681682
     
    687688    stmt.append(QLatin1Char(' ')).append(where);
    688689
    689     return d->exec(stmt, prepStatement, rec);
     690    return d->exec(stmt, prepStatement, );
    690691}
    691692
     
    977978        return s;
    978979       
    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
    980983    QString field = d->db.driver()->escapeIdentifier(f.name(), QSqlDriver::FieldName);
    981984    s.append(QLatin1String("ORDER BY ")).append(table).append(QLatin1Char('.')).append(field);
     
    10971100            else {
    10981101                d->cache[idx].op = QSqlTableModelPrivate::Delete;
     1102
    10991103                emit headerDataChanged(Qt::Vertical, idx, idx);
    11001104            }
     
    13181322            mrow.primaryValues = d->primaryValues(indexInQuery(createIndex(row, 0)).row());
    13191323        }
     1324
    13201325        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);
    13221330            if (idx == -1)
    13231331                isOk = false;
Note: See TracChangeset for help on using the changeset viewer.