u011303910 2013-07-16 14:30 采纳率: 0%
浏览 2020

QSqlRecordSet 的setValue函数在执行后不能更改数据库数据

void AddDialog::itemChanged(QTableWidgetItem current,QTableWidgetItem previous){
if(previous != NULL){
int index = previous->row();
int column =previous->column();
QSqlQuery query(db);
QString sqlStr = "select * from ";
QString table = ui->TableCombo->itemText(ui->TableCombo->currentIndex());
sqlStr += table;
QMessageBox box;
if(!query.exec(sqlStr)){

      box.setText(query.lastError().text());
      box.exec();
      return ;
 }


 query.seek(index);
 query.record().setValue(column,previous->text()); 
}

}
//这里的db是QDatabase类型的数据库对象 已经确认数据库正确连接,而且可以使用query.exec()执行更新的SQL语句没有问题.为什么setValue会没有效果

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-06 09:46
    关注

    在执行完 setValue 函数之后,你需要调用 QSqlQuery 的 prepare 函数来生成更新数据库中某条记录的SQL语句,然后再调用 exec 函数来执行这条SQL语句。例如:

    query.prepare(
        "UPDATE " + table + " SET column = :newValue WHERE id = :id"
    );
    query.bindValue(":newValue", previous->text());
    query.bindValue(":id", query.value(0));
    if (!query.exec()) {
        // error handling
    }
    

    你也可以使用 QSqlTableModel 类来简化对数据库的操作,它提供了更多的函数来方便地更新数据库中的记录。


    此外,你还可以检查一下 QSqlQuery 的 numRowsAffected 函数的返回值,以确定是否有记录被更新。

    评论

报告相同问题?

悬赏问题

  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元