找回密码
 立即注册
收起左侧

Qt5连接Mysql能够查询数据库但不能更新数据库

4
回复
3527
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2017-4-7 15:52:44 显示全部楼层 |阅读模式
1Qter豆
我做的一个物流管理系统,也就是连接数据库能够实现对数据库的增删改查,为了增加功能,我还做了一个登录窗口。但是我用query.exec(sql),sql是提前准备好的QString字符串,但是能够select查询Mysql数据库,不能够update更新数据库。
关键代码如下
  1. void MainWindow::on_Button_sure_clicked()
  2. {
  3.     //获取信息
  4.     //(1)销售数量
  5.     int num = ui->spinBox->value();
  6.     //(2)剩余
  7.     int last = ui->label_last->text().toInt();
  8.     //获取数据库的销量
  9.     QSqlDatabase::database().transaction();
  10.     QSqlQuery query;
  11.     QString sql = QString("select sell from brand where factory = '%1' and name = '%2'")
  12.             .arg( ui->comboBox_factory->currentText() )
  13.             .arg( ui->comboBox_brand->currentText()  );
  14.     //执行数据库
  15.     query.exec(sql);

  16.     int sell;
  17.     while(query.next())
  18.     {
  19.         sell = query.value("sell").toInt();
  20.     }

  21.     //更新数据库,剩余数量,销售总量
  22.     sell += num;

  23.     sql = QString("update brand set sell=%1,last=%2 where factory = '%3' and name = '%4'")
  24.             .arg(sell)
  25.             .arg(last)
  26.             .arg( ui->comboBox_factory->currentText() )
  27.             .arg( ui->comboBox_brand->currentText() );
  28.     //执行数据库
  29. query.exec(sql);

  30. }
复制代码
执行查询语句的query.exec()能够准确执行,但是执行update更新数据库的query.exec()执行结束后,我刷新数据库并没有反应


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2017-4-7 22:02:03 显示全部楼层
本帖最后由 Syylc120317 于 2017-4-7 22:04 编辑

试试下面这种方式。QSqlQuery insert(conn);insert.prepare(....);insert.bindValue(...);insert.exec();
回复

使用道具 举报

尚未签到

2017-4-7 22:29:39 显示全部楼层
先看报错就知道怎么回事了
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2017-4-25 20:29:11 显示全部楼层
终于解决了,因为上面有一个sql语句写错了,sql语句写错了检查不出来
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2017-7-16 20:50:33 显示全部楼层
update应该判断有没有 执行成功
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册