在QSqlTableModel中更新记录

时间:2011-09-12 06:16:41

标签: c++ qt qt4 model-view qtsql

我正在尝试更新记录,我有这个:

tableModel->select();
QModelIndex index = ui.tableView->currentIndex();
QString sqlQuery = QString("UPDATE %1 SET firstname=:firstname, lastname=:lastname,  country=:country, city=:city WHERE id=:id)").arg(tableName);
query.prepare(sqlQuery);
QSqlRecord recordz = tableModel->record(index.row());

query.bindValue(":firstname", ui.fEdit->text());
query.bindValue(":lastname",  ui.lnEdit->text());
query.bindValue(":country", ui.cEdit->text());
query.bindValue(":city",  ui.cityEdit->text());
query.bindValue(":id", recordz.value("id").toInt());
query.exec();
tableModel->submitAll();

应用程序编译时没有错误,但不会保存任何编辑。

1 个答案:

答案 0 :(得分:0)

    query.bindValue(":id", ui.tableView->currentIndex());

有你违规的代码行。您可以使用数据函数来尝试返回实际的索引或值,但请记住您的tableView索引!=您的SQL数据库索引。您在数据库中的索引与Qt中的索引不同,因此您需要将实际的DB ID包含在初始SQL查询中并将其与其他值一起保存,然后在运行时将其返回你的更新查询。