1

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

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();

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

4

1 回答 1

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

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

于 2011-09-12T08:27:38.083 回答