Qt 数据库操作(一)
生活随笔
收集整理的這篇文章主要介紹了
Qt 数据库操作(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Qt 中的數據庫操作比較簡單,因為Qt提供了不需要SQL知識就可以瀏覽和編輯數據庫的接口。
Qt中的Qtsql模塊提供了對數據庫的支持,該模塊中的眾多類基本可以分為3層:
- 用戶接口層: QSqlQueryModel,QSqlTableModel 和 QSqlRelationalTableModel
- SQL接口層:QSqlDatabase、QSqlQuery,QSqlError、QSqlField、QSqlIndex
和QSqlRecord - 驅動層: QSqlDriver ,QSqlDriverCreator< T >,QSqlDriverCreatorBase,QSqlDriverPlugin 和 QSqlResult
驅動層為具體的數據庫和SQL接口層之間提供了底層的橋梁;
SQL接口層提供了對數據的訪問,其中QSqlDatabase類用來創建連接,QSqlQuery類可以使用SQL語句來實現與數據庫的交互;
用戶接口層的類實現了將數據庫鏈接到窗口部件上,這些類是使用模型、視圖框架實現的。
如果要使用QtSql模塊中的類,需要在項目文件(.pro)中添加“”“QT+=sql”;
執行如下代碼:
qDebug() << "Available drivers:";QStringList drivers = QSqlDatabase::drivers();foreach(QString driver, drivers)qDebug() << driver;輸出:
Available drivers:
“QSQLITE”
“QODBC”
“QODBC3”
“QPSQL”
“QPSQL7”
可以發現Qt 默認并不支持mysql 的驅動。不過可以手動添加mysql 的驅動文件。這里先不作重點介紹了。
這里我們先就SQLite數據庫,它是一款輕型的文件型數據庫,主要用在嵌入式領域,支持跨平臺。
1、創建數據庫鏈接
QSqlDataBase db = QSqlDataBase :: addDataBase("QSQLITE");//以默認方式,創建連接對象 //初始化數據庫信息 db.setHostName("bigblue"); //設置主機名 db.setDatabaseName("fightdb"); //設置數據庫名 db.setUserName("myname"); //設置用戶名 db.setPassword("lusfasdf"); //設置密碼 bool ok = db.open(); //打開數據庫2、SQLite數據庫的建立
先創建connection.h 文件,
#ifndef CONNECTION_H #define CONNECTION_H #include <QMessageBox> #include <QSqlDatabase> #include <QSqlQuery>static bool createConnection() {QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName(":memory:");if (!db.open()) {QMessageBox::critical(0, "Cannot open database","Unable to establish a database connection.", QMessageBox::Cancel);return false;}QSqlQuery query;query.exec("create table student (id int primary key, ""name varchar(20))");query.exec("insert into student values(0, 'LiMing')");query.exec("insert into student values(1, 'LiuTao')");query.exec("insert into student values(2, 'WangHong')");return true; }#endif // CONNECTION_H創建連接并插入數據表項
然后在主函數調用并查詢數據庫。
#include <QApplication> #include <QSqlDatabase> #include <QDebug> #include <QStringList> #include "connection.h" #include <QVariant>int main(int argc, char *argv[]) {QApplication a(argc, argv);// 創建數據庫連接if (!createConnection()) return 1;// 使用QSqlQuery查詢整張表QSqlQuery query;query.exec("select * from student");while(query.next()){qDebug() << query.value(0).toInt() << query.value(1).toString();}return a.exec(); }總結
以上是生活随笔為你收集整理的Qt 数据库操作(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt 项目视图的便捷类
- 下一篇: 基于笛卡尔坐标系下的三边定位的研究(TO