24-Qt数据库(四)利用QSqlQuery类执行SQL语句(二).pdfVIP

  • 5
  • 0
  • 约4.51千字
  • 约 5页
  • 2017-08-10 发布于河南
  • 举报

24-Qt数据库(四)利用QSqlQuery类执行SQL语句(二).pdf

24-Qt数据库(四)利用QSqlQuery类执行SQL语句(二)

二十四、Qt数据库(四)利用QSqlQuery类执行SQL 语句(二) 接着上一篇教程。 二,在SQL语句中使用变量。 我们先看下面的一个例子,将“查询”按钮的槽函数更改如下: void Widget::on_pushButton_clicked() { QSqlQuery query; query.prepare(“insert into student (id, name) ” “values (:id, :name)”); query.bindValue(0, 5); query.bindValue(1, “sixth”); query.exec(); //下面输出最后一条记录 query.exec(“select * from student”); query.last(); int id = query.value(0).toInt(); QString name = query.value(1).toString(); qDebug() id name; } 运行效果如下: 可以看到,在student表的最后又添加了一条记录。在上面的程序中,我们先使 用了prepare()函数,在其中利用了“:id”和“:name”来代替具体的数据,而 后又利用bindValue()函数给id和name两个属性赋值,这称为绑定操作。其中 编号0和1分别代表“:id”和“:name”,就是说按照prepare()函数中出现的 属性从左到右编号,最左边是0 。这里的“:id”和“:name”,叫做占位符, 这是ODBC数据库的表示方法,还有一种Oracle的表示方法就是全部用“?”号。 如下: query.prepare(“insert into student (id, name) ” “values (?, ?)”); query.bindValue(0, 5); query.bindValue(1, “sixth”); query.exec(); 我们也可以利用addBindValue()函数,这样就可以省去编号,它是按顺序给属 性赋值的,如下: query.prepare(“insert into student (id, name) ” “values (?, ?)”); query.addBindValue(5); query.addBindValue(“sixth”); query.exec(); 当用ODBC的表示方法时,我们也可以将编号用实际的占位符代替,如下: query.prepare(“insert into student (id, name) ” “values (:id, :name)”); query.bindValue(“:id”, 5); query.bindValue(“:name”, “sixth”); query.exec(); 以上各种形式的表示方式效果是一样的。特别注意,在最后一定要执行exec() 函数,所做的操作才能被真正执行。 下面我们就可以利用绑定操作在SQL语句中使用变量了。 void Widget::on_pushButton_clicked() { QSqlQuery query; query.prepare(“select name from student where id = ?”); int id = ui-spinBox-value(); //从界面获取id的值 query.addBindValue(id); //将id值进行绑定 query.exec(); query.next(); //指向第一条记录 qDebug() query.value(0).toString(); } 运行程序,效果如下: 我们改变spinBox的数值大小,然后按下“查询”按钮,可以看到对应的结果就 出来了。 三,批处理操作。 当要进行多条记录的操作时,我们就可以利用绑定进行批处理。看下面的例

文档评论(0)

1亿VIP精品文档

相关文档