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 函数的返回值,以确定是否有记录被更新。

    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?