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

Qt數(shù)據(jù)庫(kù)編程 SQL連接

移動(dòng)開(kāi)發(fā)
QSqlQuery包括了所有的功能,像在一個(gè)QSqlDatabase上執(zhí)行SQL查詢(xún)創(chuàng)建、導(dǎo)航和索取數(shù)據(jù)等等。 它可以執(zhí)行DML(數(shù)據(jù)操作語(yǔ)言)語(yǔ)句,比如 SELECT, INSERT, UPDATE 和 DELETE, 還可以執(zhí)行DDL(數(shù)據(jù)定義語(yǔ)言)語(yǔ)句,比如:CREATE TABLE。

如果要使用QSqlQuery或QSqlCursor類(lèi),則少要連接并打開(kāi)一個(gè)數(shù)據(jù)庫(kù)連接。如果應(yīng)用程序只需要一個(gè)數(shù)據(jù)庫(kù)連接,QSqlDatabase類(lèi)可以創(chuàng)建一個(gè)為所有SQL操作所利用的默認(rèn)連接,如果需要多個(gè)數(shù)據(jù)庫(kù)連接,每個(gè)連接也可以容易地建立。QSqlDatabase需要qsqldatabase.h這個(gè)頭文件。

Qt Sql模塊提供了一個(gè)平臺(tái)無(wú)關(guān)且數(shù)據(jù)庫(kù)無(wú)關(guān)的訪(fǎng)問(wèn)SQL數(shù)據(jù)庫(kù)的接口。

Qt中的每個(gè)數(shù)據(jù)庫(kù)連接用一個(gè)QSqlDatabase對(duì)象來(lái)表示;Qt使用不同driver來(lái)和各種不同數(shù)據(jù)庫(kù)的API進(jìn)行通訊。

QSqlQuery提供了直接執(zhí)行任意SQL語(yǔ)句的特性;此外還提供了兩個(gè)高層次的無(wú)需SQL命令的數(shù)據(jù)庫(kù)接口:

QSqlTableModel和QSqlRelationalTableModel :Section 1. Connecting and Querying

在執(zhí)行SQL命令前,必須先建立好同數(shù)據(jù)庫(kù)的連接。

靜態(tài)函數(shù)QSqlDatabase::addDatabase()用于創(chuàng)建一個(gè)新的QSqlDatabase對(duì)象,函數(shù)的***個(gè)參數(shù)指定了Qt該選擇哪個(gè)Driver來(lái)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。

在對(duì)創(chuàng)建的QSqlDatabase對(duì)象設(shè)定好host name,database name ,username和password后,需要調(diào)用open()函數(shù)來(lái)建立到數(shù)據(jù)庫(kù)的連接。

一旦到數(shù)據(jù)庫(kù)的鏈接建立好后,就可以通過(guò)QSqlQuery::exec()來(lái)執(zhí)行底層數(shù)據(jù)庫(kù)所支持的任意SQL語(yǔ)句了。

QSqlQuery::next()返回查詢(xún)結(jié)果集中的下一行,而QSqlQuery::value()則返回當(dāng)前行中的某一項(xiàng)的值,以QVariant的形式返回。

可以使用QSqlQuery::isActive()來(lái)檢查SQL語(yǔ)句的執(zhí)行是否出現(xiàn)錯(cuò)誤。

  1. placeholder  
  2. QSqlQuery::prepare()   
  3. QSqlQuery::bindValue() or QSqlQuery::addBindValue()  
  4. QSqlQuery::exec() 

Qt支持?jǐn)?shù)據(jù)庫(kù)中transaction(事務(wù))這個(gè)概念。transaction()用于啟動(dòng)transaction,而commit()或rollback()用于結(jié)束transaction。

靜態(tài)函數(shù)QSqlDatabase::database(),返回指定連接所對(duì)應(yīng)的QSqlDatabase對(duì)象。

QSqlDatabase::driver() 返回該連接底層所使用的dirver

QSqlDatabase::hasFeature()可用來(lái)查詢(xún)底層數(shù)據(jù)庫(kù)是否支持某項(xiàng)特性。

Qt允許在一個(gè)程序中創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)連接,這中情況下在執(zhí)行SQL語(yǔ)句時(shí),需要為QSqlQuery的構(gòu)造函數(shù)傳入要執(zhí)行該語(yǔ)句的數(shù)據(jù)庫(kù)對(duì)應(yīng)的QSqlDatabase對(duì)象。

QSqlQuery相比,QSqlTableModel提供了一個(gè)更高層次、更抽象的接口,可以避免使用原始的SQL命令。

  1. QSqlTableModel::record() & QSqlTableModel::value()  
  2. QSqlTableModel::insertRow() & QSqlTableModel::setData()  
  3. QSqlTableModel::submitAll() 

于其他model不同,在使用QSqlTableModel時(shí),必須調(diào)用submitAll()來(lái)強(qiáng)制所有的修改都寫(xiě)入數(shù)據(jù)庫(kù)。

當(dāng)需要處理外鍵(foreign key)時(shí),需要使用QSqlRelationalTableModel而不是QSqlTableModel。

對(duì)于使用了SQL相關(guān)類(lèi)的應(yīng)用程序,需要在對(duì)應(yīng)的.pro中添加下面一行:"QT    +=sql",這樣在鏈接時(shí)會(huì)將QtSql庫(kù)鏈入。

小結(jié):Qt數(shù)據(jù)庫(kù)編程 SQL連接的內(nèi)容介紹完了,QSqlQuery的這個(gè)類(lèi)要了解清楚,希望本文能夠幫助到你,幫你解決問(wèn)題。

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

2011-06-23 09:00:04

QT QODBC 數(shù)據(jù)庫(kù)

2011-06-21 15:11:04

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

2011-08-30 14:59:34

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

2011-08-30 14:15:34

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

2011-07-05 09:54:04

2024-01-02 08:47:42

2011-07-05 10:16:16

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

2011-07-05 18:11:13

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

2011-06-10 10:31:57

QT mysql linux

2011-07-05 10:03:00

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

2011-06-27 12:56:28

2011-08-30 14:38:50

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

2011-08-30 13:49:57

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

2011-08-30 13:33:29

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

2011-08-23 17:33:00

SQLAndroid

2015-10-30 14:00:33

adosybaseodbc

2011-08-09 09:31:39

SQL Server數(shù)connectionS

2009-07-07 17:42:28

2010-10-26 15:54:02

連接oracle數(shù)據(jù)庫(kù)

2011-07-05 09:35:52

Ubuntu Qt Mysql
點(diǎn)贊
收藏

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