gpt4 book ai didi

c++ - 更新 QSqlTableModel 中的记录

转载 作者:太空宇宙 更新时间:2023-11-04 14:21:26 27 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

关于c++ - 更新 QSqlTableModel 中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7383963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com