QT --Qtableview 与Qsql 应用三 修改

目的:对应用一的功能进一下完善,增加修改功能。双击项目修改项。点击修改按钮,修改数据库的项并显示。

.h

private slots:
  .....................
    bool upDateItem();

.cpp

bool MainWindow::upDateItem()
{
    int id;
    QString firstName;
    QString lastName;
    int rowToUpData;
    QMap rowMap;

    QAbstractItemModel *model = ui->tableView->model();
    QItemSelectionModel *selections = ui->tableView->selectionModel();
    QModelIndexList selected = selections->selectedIndexes();
    if(selected.length() > 1)
    {
        QMessageBox::critical(this,"提示","请只选择一行来更改!");
        return false;
    }
     rowToUpData = ui->tableView ->currentIndex().row();
     QModelIndex index =model->index(rowToUpData,0);
    // id = model->data(index).toInt();
     id=index.sibling(rowToUpData,0).data().toInt();
     firstName = index.sibling(rowToUpData,1).data().toString();
     lastName = index.sibling(rowToUpData,2).data().toString();
     QSqlQuery query;
     QString cmd;
     cmd =QString("UPDATE person SET firstname =  '%1', lastname =  '%2'  WHERE id =  %3").arg(firstName).arg(lastName).arg(id);
     query.exec(cmd);
     if(!query.isActive())
     {
         query.finish();
         return false;
     }
     else
     {
          dataModel->clear();
     }
     query.finish();

    selectDb();
    return true;

}

总结:易错点在于数据库的语句。

你可能感兴趣的:(Qt学习之道)