自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt數(shù)據(jù)庫(kù) 利用QSqlQuery類(lèi)執(zhí)行SQL語(yǔ)句 下篇

移動(dòng)開(kāi)發(fā)
本文介紹的是Qt數(shù)據(jù)庫(kù) 利用QSqlQuery類(lèi)執(zhí)行SQL語(yǔ)句,SQL即結(jié)構(gòu)化查詢(xún)語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。詳細(xì)內(nèi)容我們先來(lái)看內(nèi)容。

Qt數(shù)據(jù)庫(kù) 利用QSqlQuery類(lèi)執(zhí)行SQL語(yǔ)句 下篇是本節(jié)介紹的內(nèi)容,接著上篇文章繼續(xù)講 Qt數(shù)據(jù)庫(kù) 利用QSqlQuery類(lèi)執(zhí)行SQL語(yǔ)句 中篇,先來(lái)看內(nèi)容。

三,批處理操作。

當(dāng)要進(jìn)行多條記錄的操作時(shí),我們就可以利用綁定進(jìn)行批處理??聪旅娴睦?。

  1. void Widget::on_pushButton_clicked()  
  2. {  
  3.     QSqlQuery q;  
  4.     q.prepare(“insert into student values (?, ?)”);  
  5.  
  6.     QVariantList ints;  
  7.     ints << 10 << 11 << 12 << 13;  
  8.     q.addBindValue(ints);  
  9.  
  10.     QVariantList names;  
  11.     names << “xiaoming” << “xiaoliang” << “xiaogang” << QVariant(QVariant::String);  
  12.     //***一個(gè)是空字符串,應(yīng)與前面的格式相同  
  13.    q.addBindValue(names);  
  14.  
  15.     if (!q.execBatch()) //進(jìn)行批處理,如果出錯(cuò)就輸出錯(cuò)誤  
  16.         qDebug() << q.lastError();  
  17.  
  18.     //下面輸出整張表  
  19.     QSqlQuery query;  
  20.     query.exec(“select * from student”);  
  21.     while(query.next())  
  22.     {  
  23.         int id = query.value(0).toInt();  
  24.         QString name = query.value(1).toString();  
  25.         qDebug() << id << name;  
  26.     }  

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

我們?cè)诔绦蛑欣昧斜泶鎯?chǔ)了同一屬性的多個(gè)值,然后進(jìn)行了值綁定。***執(zhí)行execBatch()函數(shù)進(jìn)行批處理。注意程序中利用QVariant(QVariant::String)來(lái)輸入空值NULL,因?yàn)榍懊娑际荙String類(lèi)型的,所以這里要使用QVariant::String 使格式一致化。

運(yùn)行效果如下:

Qt數(shù)據(jù)庫(kù) 利用QSqlQuery類(lèi)執(zhí)行SQL語(yǔ)句 下篇

四,事務(wù)操作。

事務(wù)是數(shù)據(jù)庫(kù)的一個(gè)重要功能,所謂事務(wù)是用戶(hù)定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操作要么全做要么全不做,是一個(gè)不可分割的工作單位。在Qt中用transaction()開(kāi)始一個(gè)事務(wù)操作,用commit()函數(shù)或rollback()函數(shù)進(jìn)行結(jié)束。commit()表示提交,即提交事務(wù)的所有操作。具體地說(shuō)就是將事務(wù)中所有對(duì)數(shù)據(jù)庫(kù)的更新寫(xiě)回到數(shù)據(jù)庫(kù),事務(wù)正常結(jié)束。rollback()表示回滾,即在事務(wù)運(yùn)行的過(guò)程中發(fā)生了某種故障,事務(wù)不能繼續(xù)進(jìn)行,系統(tǒng)將事務(wù)中對(duì)數(shù)據(jù)庫(kù)的所有已完成的操作全部撤銷(xiāo),回滾到事務(wù)開(kāi)始時(shí)的狀態(tài)。

如下面的例子:

  1. void Widget::on_pushButton_clicked()  
  2. {  
  3.     if(QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions))  
  4.     {     //先判斷該數(shù)據(jù)庫(kù)是否支持事務(wù)操作  
  5.         QSqlQuery query;  
  6.         if(QSqlDatabase::database().transaction()) //啟動(dòng)事務(wù)操作  
  7.         {  
  8.             //  
  9.             //下面執(zhí)行各種數(shù)據(jù)庫(kù)操作  
  10.             query.exec(“insert into student values (14, ‘hello’)”);  
  11.             query.exec(“delete from student where id = 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 * from student”);  
  22.         while(query.next())  
  23.             qDebug() << query.value(0).toInt() << query.value(1).toString();  
  24.     }  

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

QSqlDatabase::database()返回程序前面所生成的連接的QSqlDatabase對(duì)象。hasFeature()函數(shù)可以查看一個(gè)數(shù)據(jù)庫(kù)是否支持事務(wù)。

運(yùn)行結(jié)果如下:

Qt數(shù)據(jù)庫(kù) 利用QSqlQuery類(lèi)執(zhí)行SQL語(yǔ)句 下篇

可以看到結(jié)果是正確的。

對(duì)SQL語(yǔ)句我們就介紹這么多,其實(shí)Qt中提供了更為簡(jiǎn)單的不需要SQL語(yǔ)句就可以操作數(shù)據(jù)庫(kù)的方法,我們?cè)谙乱还?jié)講述這些內(nèi)容。本文章原創(chuàng)于www.yafeilinux.com

小結(jié):Qt數(shù)據(jù)庫(kù) 利用QSqlQuery類(lèi)執(zhí)行SQL語(yǔ)句 下篇的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!更多關(guān)于數(shù)據(jù)庫(kù)的操作請(qǐng)看編輯推薦。

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-27 14:31:29

Qt 數(shù)據(jù)庫(kù) SQL語(yǔ)句

2011-06-27 14:17:35

Qt 數(shù)據(jù)庫(kù) QSqlQuery

2011-06-27 13:49:43

Qt 數(shù)據(jù)庫(kù) QSqlQueryM

2011-06-21 15:58:20

Qt 數(shù)據(jù)庫(kù)

2011-08-15 14:29:52

SQL Server數(shù)事務(wù)

2010-09-07 15:20:58

SQL語(yǔ)句事務(wù)

2010-11-18 10:06:16

Oracle數(shù)據(jù)庫(kù)性能

2011-06-21 15:31:04

Qt 數(shù)據(jù)庫(kù) SQL

2010-04-16 09:41:42

Oracle數(shù)據(jù)庫(kù)查看

2011-01-06 09:28:19

SQL語(yǔ)句

2010-09-07 16:12:36

SQL語(yǔ)句數(shù)據(jù)庫(kù)壓縮

2009-03-09 17:46:16

ASP.NETSQLOracle

2011-09-01 19:00:08

SQL ServerDBCC語(yǔ)句

2011-09-09 10:10:13

SQL數(shù)據(jù)庫(kù)點(diǎn)滴

2010-06-28 10:36:42

SQL Server數(shù)

2023-05-10 08:29:12

2011-03-30 09:23:29

2019-03-01 18:50:09

SQL Server數(shù)據(jù)庫(kù)備份并壓縮

2010-07-15 15:37:13

SQL Server數(shù)

2010-05-11 10:12:50

mysql數(shù)據(jù)庫(kù)sql
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)