我正在尝试更新记录,我有这个:
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();
应用程序编译时没有错误,但不会保存任何编辑。
答案 0 :(得分:0)
query.bindValue(":id", ui.tableView->currentIndex());
有你违规的代码行。您可以使用数据函数来尝试返回实际的索引或值,但请记住您的tableView索引!=您的SQL数据库索引。您在数据库中的索引与Qt中的索引不同,因此您需要将实际的DB ID包含在初始SQL查询中并将其与其他值一起保存,然后在运行时将其返回你的更新查询。