【Qt】数据库实战(一)
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. 開發環境
- 03. 數據庫驅動
- 04. 創建數據庫連接
- 05. 數據庫簡單操作
- 06. 附錄
01. 概述
Qt中的Qt SQL模塊提供了對數據庫的支持,該模塊中的眾多類基本上可以分為三層。
驅動層為具體的數據庫和SQL接口層之間提供了底層的橋梁;SQL接口層提供了對數據庫的訪問,其中的QSqlDatabase類用來創建連接,QSqlQuery類可以使用
SQL語句來實現與數據庫交互,其他幾個類對該層提供了支持;用戶接口層的幾個類實現了將數據庫中的數據鏈接到窗口部件上,它們是更高層次的抽象,即便不
熟悉SQL也可以操作數據庫。如果要使用Qt SQL模塊中的這些類,需要在項目文件(.pro文件)中添加QT += sql這一行代碼。對應數據庫部分的內容,大家可以
在幫助中查看SQL Programming關鍵字。
02. 開發環境
Windows系統:Windows10
Qt版本:Qt5.15或者Qt6
03. 數據庫驅動
Qt SQL模塊使用數據庫驅動來和不同的數據庫接口進行通信。由于Qt的SQL模型的接口是獨立于數據庫的,所以所有數據庫特定的代碼都包含在了這些驅動中。Qt現在支持的數據庫驅動如下圖所示。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WfTJJ8Qj-1616658483966)(assets/image-20210325152325294.png)]
需要說明的是,由于GPL許可證的兼容性問題,并不是這里列出的所有驅動插件都提供給了Qt的開源版本。下面我們通過程序來查看一下現在版本的Qt中可用的數據庫插件。
在.pro文件中添加下面一行
QT += sql程序示例:
#include <QCoreApplication>#include <QSqlDatabase> #include <QStringList> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);qDebug() << "Availabel drivers: ";QStringList drivers = QSqlDatabase::drivers();foreach(QString str, drivers){qDebug() << str;}return 0; }執行結果:
Availabel drivers: "QSQLITE" "QODBC" "QODBC3" "QPSQL" "QPSQL7"04. 創建數據庫連接
下面使用QSLite數據庫來進行一個簡單的演示,創建一個數據庫表,然后連接到數據庫,我們更改main.cpp文件的內容如下:
#include <QCoreApplication>#include <QSqlDatabase> #include <QStringList> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);//創建一個SQLite數據庫連接QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName(":memory:");bool ret = db.open();if (ret){qDebug() << "打開數據庫成功";}else{qDebug() << "打開數據庫失敗";}//關閉數據庫if (db.isOpen()){db.close();db.removeDatabase(db.databaseName());}return 0; }執行結果:
打開數據庫成功05. 數據庫簡單操作
下面使用QSLite數據庫來進行一個簡單的演示,創建一個數據庫表,然后查找其中的數據并進行輸出。我們更改main.cpp文件的內容如下:
#include <QCoreApplication>#include <QSqlDatabase> #include <QSqlQuery> #include <QSqlError> #include <QStringList> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);//創建一個SQLite數據庫連接QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName(":memory:");bool ret = db.open();if (ret){qDebug() << "打開數據庫成功";}else{qDebug() << "打開數據庫失敗";return -1;}//創建QSqlQuery對象QSqlQuery query;query.exec("create table student(id int primary key, name varchar)");query.exec("insert into student values(1, 'xiaoming')");query.exec("insert into student values(2, 'xiaogang')");query.exec("insert into student values(3, 'xiaohong')");//查找表中id > 2的數據query.exec("select id, name from student where id >= 2");while(query.next()){int id = query.value(0).toInt();QString name = query.value(1).toString();//輸出兩個值qDebug() << id << " " << name;}//關閉數據庫if (db.isOpen()){db.close();db.removeDatabase(db.databaseName());}return 0; }執行結果:
打開數據庫成功 2 "xiaogang" 3 "xiaohong"06. 附錄
6.1 Qt教程匯總
網址:https://dengjin.blog.csdn.net/article/details/115174639
6.2 源碼下載
網址:【Qt】數據庫實戰(一).rar
總結
以上是生活随笔為你收集整理的【Qt】数据库实战(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Qt】数据库用户接口层
- 下一篇: 【Qt】数据库实战(二)