qtsql模組提供了乙個平台無關且資料庫無關的訪問sql資料庫的介面。
qt中的每個資料庫連線用乙個qsqldatabase物件來表示;qt使用不同driver來和各種不同資料庫的api進行通訊。
qsqlquery提供了直接執行任意sql語句的特性;此外還提供了兩個高層次的無需sql命令的資料庫介面:qsqltablemodel和qsqlrelationaltablemodel
section 1. connecting and querying
在執行sql命令前,必須先建立好同資料庫的連線。
靜態函式qsqldatabase::adddatabase()用於建立乙個新的qsqldatabase物件,函式的第乙個引數指定了qt該選擇哪個driver來訪問資料庫。
在對建立的qsqldatabase物件設定好host name,database name ,username和password後,需要呼叫open()函式來建立到資料庫的連線。
一旦到資料庫的鏈結建立好後,就可以通過qsqlquery::exec()來執行底層資料庫所支援的任意sql語句了。
qsqlquery::next()返回查詢結果集中的下一行,而qsqlquery::value()則返回當前行中的某一項的值,以qvariant的形式返回。
可以使用qsqlquery::isactive()來檢查sql語句的執行是否出現錯誤。
placeholder
qsqlquery::prepare()
qsqlquery::bindvalue() or qsqlquery::addbindvalue()
qsqlquery::exec()
qt支援資料庫中transaction(事務)這個概念。transaction()用於啟動transaction,而commit()或rollback()用於結束transaction。
靜態函式qsqldatabase::database(),返回指定連線所對應的qsqldatabase物件。
qsqldatabase::driver() 返回該連線底層所使用的dirver
qsqldatabase::hasfeature()可用來查詢底層資料庫是否支援某項特性。
qt允許在乙個程式中建立多個資料庫連線,這中情況下在執行sql語句時,需要為qsqlquery的建構函式傳入要執行該語句的資料庫對應的qsqldatabase物件。
與qsqlquery相比,qsqltablemodel提供了乙個更高層次、更抽象的介面,可以避免使用原始的sql命令。
qsqltablemodel::record() & qsqltablemodel::value()
qsqltablemodel::insertrow() & qsqltablemodel::setdata()
qsqltablemodel::submitall() ,於其他model不同,在使用qsqltablemodel時,必須呼叫submitall()來強制所有的修改都寫入資料庫。
當需要處理外來鍵(foreign key)時,需要使用qsqlrelationaltablemodel而不是qsqltablemodel。
對於使用了sql相關類的應用程式,需要在對應的.pro中新增下面一行:"qt +=sql",這樣在鏈結時會將qtsql庫鏈入。
**:
Qt之資料庫程式設計
摘自 c gui qt4程式設計 在qt中,實現與資料庫程式設計相關的模組是qtsql模組,該模組提供了一組與平台以及資料庫種類無關的sql資料庫訪問介面。此介面通過驅動程式與各種資料庫進行通訊。qt桌面版提供的驅動程式如下 驅動程式 資料庫qdb2 ibm db2 7.1版以及更高版本 qoci ...
QT 資料庫程式設計一
qt如果要進行網路程式設計首先需要在.pro中新增如下 qt network logindlg.h ifndef logindlg h define logindlg h include include include include class logindlg public qdialog en...
Linux平台QT資料庫程式設計(來自網路)
linux平台qt資料庫程式設計 在linux平台使用qt來編寫gui程式,在進行資料庫程式設計的時候,有兩種選擇方式,分別是 基於linux平台的資料庫介面函式程式設計,另一種是使用qt自帶的有關資料庫類。那在這裡我分別來講一下這兩種方式的實現。一 使用linux平台的資料庫介面程式設計 在這裡我...