• 5398阅读
  • 3回复

高手请!VS2005下,qt访问Access,无法进行数据的更新 [复制链接]

上一主题 下一主题
离线bingyang211
 

只看楼主 倒序阅读 楼主  发表于: 2008-08-31
— 本帖被 XChinux 执行加亮操作(2008-08-31) —
    简介下:VS2005+QT4.2.2,访问数据库Access。模拟银行ATM机器。进行数据的更新。
可以进行余额的查询和密码的修改,但是不能进行数据的更新!!!                 

这是代码:
                    sqlcode2="select balance from userinfo where accountid='"+id+"'";
    query.exec(sqlcode2);
    int balance = query.value(0).toInt();
                    int balance2 = ui.lineEdit->text().toInt();  //获取当前账户余额,并将QString转化为int。
       
    balance =(balance - balance2);
    QString s=  QString (balance);      //加减完毕后,再类型转换为QString
    QMessageBox::information(this,this->id,s);   
                      //错误出先在这里了。消息框弹出的是ASCII字符。。。。。。


                      sqlcode="update userinfo set BALANCE='"+s+"' where accountid='"+id+"'";
    fetch.exec(sqlcode);


跪谢!
   
离线icevi

只看该作者 1楼 发表于: 2008-08-31
问题就出在:
QString s=  QString (balance);
这样不是把数值型直接转成字符串,你看下QT帮助文件。正确写法应该是:
QString s=  QString ("%1").arg(balance);
用其它写法也可以。但就是不能用你的那个写法,意义是不一样的。
====================
www.bilive.com
BiForm BiReader BiChat
最爱QT和PYTHON
====================
离线bingyang211

只看该作者 2楼 发表于: 2008-08-31
呵呵,谢谢!

这个解决了,可是问题又来了!
int balance2 = ui.lineEdit->text().toInt();  //获取当前账户余额,并将QString转化为int。
经测试,balance2的值为0
有人可以解释吗?怎样把QString类型的数据转化为int或long型的?
离线bingyang211

只看该作者 3楼 发表于: 2008-08-31
int balance = query.value(0);
int balance2 = ui.lineEdit->text().toInt();
balance = balance-balance2;
    QString s=  QString ("%1").arg(balance);
sqlcode="update userinfo set BALANCE='"+s+"' where accountid='"+id+"'";
    fetch.exec(sqlcode);
这个样子可以把?
快速回复
限100 字节
 
上一个 下一个