QT開發(四十六)——QT數據庫編程基礎

QT開發(四十六)——QT數據庫編程基礎

1、Qt SQL模塊簡介

1Qt SQL模塊簡介

    QT經過Qt SQL模塊提供了對SQL數據庫的支持,Qt SQL模塊中的API分爲三層:驅動層、SQL接口層、用戶接口層。sql

若是要使用Qt SQL模塊中的類,須要在工程文件(.pro文件)中添加QT += sql代碼。數據庫

二、驅動層

    驅動層爲具體的數據庫和SQL接口層之間提供了底層的橋樑,主要類包括Qt SQL模塊中的QSqlDriverQSqlDriverCreatorQSqlDriverCreatorBaseQSqlDriverPluginQSqlResult編程

三、SQL接口層

    SQL接口層提供了對數據庫的訪問,主要類包括Qt SQL模塊中的QSqlDatabaseQSqlQueryQSqlErrorQSqlFieldQSqlIndexQSqlRecordQSqlDatabase類用於建立數據庫鏈接,QSqlQuery用於使用SQL語句實現與數據庫交互。框架

 

4、用戶接口層

    用戶接口層主要包括Qt SQL模塊中的QSqlQueryModelQSqlTableModelQSqlRelationalTableModel。用戶接口層的類實現了將數據庫中的數據連接到窗口部件上,是使用模型/視圖框架實現的,是更高層次的抽象,即使不熟悉SQL也能夠操做數據庫。須要注意的是,在使用用戶接口層的類以前必須先實例化QCoreApplication對象。ide

2、數據庫驅動

    Qt SQL模塊使用數據庫驅動插件和不一樣的數據庫接口進行通訊。因爲Qt的SQL模塊的接口是獨立於數據庫的,因此全部具體數據庫的代碼包含在了這些驅動中。QT自己提供了多種數據庫驅動,而且能夠添加其餘數據庫驅動。QT提供的數據庫驅動源碼能夠做爲編寫自定義驅動的模型。spa

QT5.7版本支持的數據庫驅動以下:插件

數據庫驅動對象

備註接口

QDB2開發

IBM DB2 7.1及以上版本

QIBASE

Borland InterBase

QMYSQL

Mysql

QOCI

Oracle Call Interface Driver

QODBC

ODBC

QPSQL

PostgreSQL 7.3及以上版本

QSQLITE2

SQLite 2版本

QSQLITE

SQLite 3版本

QTDS

Sybase Adaptive Server,QT 4.7開始廢棄

    QT5.7版本支持的數據庫驅動以下:

因爲GPL許可證的兼容性問題,並非列出的全部驅動插件都提供給了Qt的開源版本。實際QT中安裝的驅動能夠根據以下代碼顯示:

#include <QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
       qDebug() << driver;
    return a.exec();
}

3、數據庫鏈接

1、鏈接MySQL數據庫

//使用MySQL數據庫驅動創建一個數據庫鏈接

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

db.setHostName("IP");//設置主機

db.setDatabaseName("dbname"); //設置數據庫名稱

db.setUserName("user"); //設置用戶名

db.setPassword("password"); //設置密碼

bool ok = db.open(); //鏈接數據庫

二、鏈接Acess數據庫

//使用ODBC驅動鏈接數據庫

QSqlDatabase ldb = QSqlDatabase::addDatabase("QODBC");  

ldb.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=db.mdb;UID=user;PWD=passwor");  

bool ok = ldb.open();  

三、鏈接SQL Server數據庫

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");

db.setDatabaseName(QString("DRIVER={SQL SERVER}; SERVER=%1; DATABASE=%2; UID=%3; PWD=%4;").arg("IP").arg("dbname").arg("user").arg("password"));

bool ok = db.open();

四、鏈接SQLite數據庫

//使用SQLite數據庫驅動創建一個數據庫鏈接

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

db.setHostName("IP");//設置主機

db.setDatabaseName("dbname"); //設置數據庫名稱

db.setUserName("user"); //設置用戶名

db.setPassword("password"); //設置密碼

bool ok = db.open(); //鏈接數據庫

相關文章
相關標籤/搜索