本文介绍的是Qt数据库 利用QSqlQuery类执行SQL语句,SQL即结构化查询语言,是关系数据库的标准语言。详细内容我们先来看内容。

Qt数据库 利用QSqlQuery类执行SQL语句 下篇是本节介绍的内容,接着上篇文章继续讲 Qt数据库 利用QSqlQuery类执行SQL语句 中篇,先来看内容。

三,批处理操作。

当要进行多条记录的操作时,我们就可以利用绑定进行批处理。看下面的例子。

  1. voidWidget::on_pushButton_clicked()
  2. {
  3. QSqlQueryq;
  4. q.prepare(“insertintostudentvalues(?,?)”);
  5. QVariantListints;
  6. ints<<10<<11<<12<<13;
  7. q.addBindValue(ints);
  8. QVariantListnames;
  9. names<<“xiaoming”<<“xiaoliang”<<“xiaogang”<<QVariant(QVariant::String);
  10. //***一个是空字符串,应与前面的格式相同
  11. q.addBindValue(names);
  12. if(!q.execBatch())//进行批处理,如果出错就输出错误
  13. qDebug()<<q.lastError();
  14. //下面输出整张表
  15. QSqlQueryquery;
  16. query.exec(“select*fromstudent”);
  17. while(query.next())
  18. {
  19. intid=query.value(0).toInt();
  20. QStringname=query.value(1).toString();
  21. qDebug()<<id<<name;
  22. }
  23. }

然后在widget.cpp文件中添加头文件 #include <QSqlError> 。

我们在程序中利用列表存储了同一属性的多个值,然后进行了值绑定。***执行execBatch()函数进行批处理。注意程序中利用QVariant(QVariant::String)来输入空值NULL,因为前面都是QString类型的,所以这里要使用QVariant::String 使格式一致化。

运行效果如下:

Qt数据库 利用QSqlQuery类执行SQL语句 下篇(qt+sql)  Qt 数据库 QSqlQuery 第1张

四,事务操作。

事务是数据库的一个重要功能,所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。在Qt中用transaction()开始一个事务操作,用commit()函数或rollback()函数进行结束。commit()表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到数据库,事务正常结束。rollback()表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。

如下面的例子:

  1. voidWidget::on_pushButton_clicked()
  2. {
  3. if(QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions))
  4. {//先判断该数据库是否支持事务操作
  5. QSqlQueryquery;
  6. if(QSqlDatabase::database().transaction())//启动事务操作
  7. {
  8. //
  9. //下面执行各种数据库操作
  10. query.exec(“insertintostudentvalues(14,‘hello’)”);
  11. query.exec(“deletefromstudentwhereid=1″);
  12. //
  13. if(!QSqlDatabase::database().commit())
  14. {
  15. qDebug()<<QSqlDatabase::database().lastError();//提交
  16. if(!QSqlDatabase::database().rollback())
  17. qDebug()<<QSqlDatabase::database().lastError();//回滚
  18. }
  19. }
  20. //输出整张表
  21. query.exec(“select*fromstudent”);
  22. while(query.next())
  23. qDebug()<<query.value(0).toInt()<<query.value(1).toString();
  24. }
  25. }

然后在widget.cpp文件中添加头文件 #include <QSqlDriver> 。

QSqlDatabase::database()返回程序前面所生成的连接的QSqlDatabase对象。hasFeature()函数可以查看一个数据库是否支持事务。

运行结果如下:

Qt数据库 利用QSqlQuery类执行SQL语句 下篇(qt+sql)  Qt 数据库 QSqlQuery 第2张

可以看到结果是正确的。

对SQL语句我们就介绍这么多,其实Qt中提供了更为简单的不需要SQL语句就可以操作数据库的方法,我们在下一节讲述这些内容。本文章原创于www.yafeilinux.com

小结:Qt数据库 利用QSqlQuery类执行SQL语句 下篇的内容介绍完了,希望本文对你有所帮助!更多关于数据库的操作请看编辑推荐。

转载请说明出处
知优网 » Qt数据库 利用QSqlQuery类执行SQL语句 下篇(qt+sql)

发表评论

您需要后才能发表评论