Qt数据库 利用QSqlQuery类执行SQL语句 中篇
创始人
2024-08-01 19:10:26
0

Qt数据库 利用QSqlQuery类执行SQL语句 下篇是本节需要介绍的内容,接着上一篇教程。Qt数据库 利用QSqlQuery类执行SQL语句 上篇 ,也不多说了,直接看内容。

SQL语句中使用变量。

我们先看下面的一个例子,将“查询”按钮的槽函数更改如下:

  1. void Widget::on_pushButton_clicked()  
  2. {  
  3.     QSqlQuery query;  
  4.     query.prepare(“insert into student (id, name) ”  
  5.                   “values (:id, :name)”);  
  6.     query.bindValue(0, 5);  
  7.     query.bindValue(1, “sixth”);  
  8.     query.exec();  
  9.  
  10.     //下面输出最后一条记录  
  11.     query.exec(“select * from student”);  
  12.     query.last();  
  13.     int id = query.value(0).toInt();  
  14.     QString name = query.value(1).toString();  
  15.     qDebug() << id << name;  

运行效果如下:

Qt数据库 利用QSqlQuery类执行SQL语句 中篇

可以看到,在student表的最后又添加了一条记录。在上面的程序中,我们先使用了prepare()函数,在其中利用了“:id”和“:name”来代替具体的数据,而后又利用bindValue()函数给id和name两个属性赋值,这称为绑定操作。其中编号0和1分别代表“:id”和“:name”,就是说按照prepare()函数中出现的属性从左到右编号,最左边是0 。这里的“:id”和“:name”,叫做占位符,这是ODBC数据库的表示方法,还有一种Oracle的表示方法就是全部用“?”号。如下:

  1. query.prepare(“insert into student (id, name) ”  
  2.                   “values (?, ?)”);  
  3. query.bindValue(0, 5);  
  4. query.bindValue(1, “sixth”);  
  5. query.exec(); 

我们也可以利用addBindValue()函数,这样就可以省去编号,它是按顺序给属性赋值的,如下:

  1. query.prepare(“insert into student (id, name) ”  
  2.                   “values (?, ?)”);  
  3. query.addBindValue(5);  
  4. query.addBindValue(“sixth”);  
  5. query.exec(); 

当用ODBC的表示方法时,我们也可以将编号用实际的占位符代替,如下:

  1. query.prepare(“insert into student (id, name) ”  
  2.                       “values (:id, :name)”);  
  3. query.bindValue(“:id”, 5);  
  4. query.bindValue(“:name”, “sixth”);  
  5. query.exec(); 

以上各种形式的表示方式效果是一样的。特别注意,在最后一定要执行exec()函数,所做的操作才能被真正执行。

下面我们就可以利用绑定操作在SQL语句中使用变量了。

  1. void Widget::on_pushButton_clicked()  
  2. {  
  3.     QSqlQuery query;  
  4.     query.prepare(“select name from student where id = ?”);  
  5.     int id = ui->spinBox->value(); //从界面获取id的值  
  6.     query.addBindValue(id); //将id值进行绑定  
  7.     query.exec();  
  8.     query.next(); //指向第一条记录  
  9.     qDebug() << query.value(0).toString();  

运行程序,效果如下:

Qt数据库 利用QSqlQuery类执行SQL语句 中篇

我们改变spinBox的数值大小,然后按下“查询”按钮,可以看到对应的结果就出来了。

小结:Qt数据库 利用QSqlQuery类执行SQL语句 中篇的内容介绍完了,希望本节内容对你有帮助,想继续深入了解的话,请参考

Qt数据库 利用QSqlQuery类执行SQL语句 下篇。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...