目的:对应用一的功能进一下完善,增加修改功能。双击项目修改项。点击修改按钮,修改数据库的项并显示。
.h
private slots:
.....................
bool upDateItem();
.cpp
bool MainWindow::upDateItem()
{
int id;
QString firstName;
QString lastName;
int rowToUpData;
QMap<int, int> 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;
}
总结:易错点在于数据库的语句。