Qt中SQL语句update同时更新多字段及设置字段值为空的方法

原文地址::https://blog.csdn.net/ckzhb/article/details/79853566


Qt中往往需要对数据库进行操作,常出现根据某变量更改相关字段的内容。一般地,可以采用名称绑定和位置绑定两种方法。

Qt与MySQL连接方法:https://blog.csdn.net/ckzhb/article/details/79630035

本文以update举例,其他insert等语句操作类似。

方法一:名称绑定

[cpp]  view plain  copy
  1. 已知:定义Qstring类型变量a b c d e f g h。  
  2. QSqlQuery query5;  
  3. query5.prepare(QString("UPDATE rfid_match SET CKH=:ckh,WLMS=:wlms,CCLX=:cclx,CW=:cw,PC=:pc,GC=:gc,JLDW=:jldw WHERE WZSFM='%1'").arg(a));  
  4. query5.bindValue(":ckh",b);  
  5. query5.bindValue(":wlms",c);  
  6. query5.bindValue(":cclx",d);  
  7. query5.bindValue(":cw",e);  
  8. query5.bindValue(":pc",f);  
  9. query5.bindValue(":gc",g);  
  10. query5.bindValue(":jldw",h);  
  11. query5.exec();  

注意:第三行中的WHERE='%1'中不要忘记%1两边的单引号,因为表中字段类型是varchar型。

方法二:位置绑定

[cpp]  view plain  copy
  1. 已知:定义Qstring类型变量a b c d e f g h。  
  2. QSqlQuery query5;  
  3. query5.prepare(QString("update rfid_match set CKH=?,WLMS=?,"  
  4.                "CCLX=?,CW=?,PC=?,GC=?,JLDW=? WHERE WZSFM='%1'").arg(a));  
  5. query5.addBindValue(b);  
  6. query5.addBindValue(c);  
  7. query5.addBindValue(d);  
  8. query5.addBindValue(e);  
  9. query5.addBindValue(f);  
  10. query5.addBindValue(g);  
  11. query5.addBindValue(h);  
  12. query5.exec();    

提示:

将数据库中某字段值设置为空用null,如下所示

[cpp]  view plain  copy
  1. query.exec(QString("update rfid_match set RFID2=null where WZSFM='%1'").arg(model->item(modelReIndex,4)->text()));  


//=====================================================================

备注::

举例如下

1》

 QString  idstr;

query1.prepare(QString("UPDATE Tb_abc_Info SET PRINT_FLAG=:print_flag WHERE id='%1'").arg(idstr));
              query1.bindValue(":print_flag",2);
 
 
              query1.exec();


2》

 QString  idstr;

query1.prepare(QString("update Tb_abc_Info set print_Flag=? WHERE id='%1'").arg(idstr));
 
 
           query1.addBindValue(2);
           query1.exec();

猜你喜欢

转载自blog.csdn.net/xqhrs232/article/details/80470014
今日推荐