Qt数据库编程_基本
QtSql模塊提供了一個(gè)平臺(tái)無關(guān)且數(shù)據(jù)庫無關(guān)的訪問SQL數(shù)據(jù)庫的接口。
????Qt中的每個(gè)數(shù)據(jù)庫連接用一個(gè)QSqlDatabase對(duì)象來表示;Qt使用不同driver來和各種不同數(shù)據(jù)庫的API進(jìn)行通訊。
????QSqlQuery提供了直接執(zhí)行任意SQL語句的特性;此外還提供了兩個(gè)高層次的無需SQL命令的數(shù)據(jù)庫接口:QSqlTableModel和QSqlRelationalTableModel
Section?1.?Connecting?and?Querying
????在執(zhí)行SQL命令前,必須先建立好同數(shù)據(jù)庫的連接。
????靜態(tài)函數(shù)QSqlDatabase::addDatabase()用于創(chuàng)建一個(gè)新的QSqlDatabase對(duì)象,函數(shù)的第一個(gè)參數(shù)指定了Qt該選擇哪個(gè)Driver來訪問數(shù)據(jù)庫。
????在對(duì)創(chuàng)建的QSqlDatabase對(duì)象設(shè)定好host?name,database?name?,username和password后,需要調(diào)用open()函數(shù)來建立到數(shù)據(jù)庫的連接。
????一旦到數(shù)據(jù)庫的鏈接建立好后,就可以通過QSqlQuery::exec()來執(zhí)行底層數(shù)據(jù)庫所支持的任意SQL語句了。
????QSqlQuery::next()返回查詢結(jié)果集中的下一行,而QSqlQuery::value()則返回當(dāng)前行中的某一項(xiàng)的值,以QVariant的形式返回。
????可以使用QSqlQuery::isActive()來檢查SQL語句的執(zhí)行是否出現(xiàn)錯(cuò)誤。
placeholder
????QSqlQuery::prepare()?
????QSqlQuery::bindValue()?or?QSqlQuery::addBindValue()
????QSqlQuery::exec()
????Qt支持?jǐn)?shù)據(jù)庫中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()可用來查詢底層數(shù)據(jù)庫是否支持某項(xiàng)特性。
????Qt允許在一個(gè)程序中創(chuàng)建多個(gè)數(shù)據(jù)庫連接,這中情況下在執(zhí)行SQL語句時(shí),需要為QSqlQuery的構(gòu)造函數(shù)傳入要執(zhí)行該語句的數(shù)據(jù)庫對(duì)應(yīng)的QSqlDatabase對(duì)象。
????與QSqlQuery相比,QSqlTableModel提供了一個(gè)更高層次、更抽象的接口,可以避免使用原始的SQL命令。
????QSqlTableModel::record()?&?QSqlTableModel::value()
????QSqlTableModel::insertRow()?&?QSqlTableModel::setData()
????QSqlTableModel::submitAll()?,于其他model不同,在使用QSqlTableModel時(shí),必須調(diào)用submitAll()來強(qiáng)制所有的修改都寫入數(shù)據(jù)庫。
? ?當(dāng)需要處理外鍵(foreign?key)時(shí),需要使用QSqlRelationalTableModel而不是QSqlTableModel。
????對(duì)于使用了SQL相關(guān)類的應(yīng)用程序,需要在對(duì)應(yīng)的.pro中添加下面一行:"QT?????+=sql",這樣在鏈接時(shí)會(huì)將QtSql庫鏈入。
轉(zhuǎn)載于:https://www.cnblogs.com/lvdongjie/p/3747188.html
總結(jié)
以上是生活随笔為你收集整理的Qt数据库编程_基本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS的盒子模型(Box Model)
- 下一篇: 51. 顺时针打印矩阵[print ma