qt學習筆記(七)之資料庫簡介

來源:互聯網
上載者:User

筆者最近用Qt寫公司的考勤機。本來要求是要基於frameBuffer下用自己開發的easyGUI來進行上層應用開發,但是考慮到easyGUI提供的介面不是很多,就考慮用Qt來開發,順帶練練手。 廢話不多說,馬上進入主題。

一、QtSql模組

Qt為資料庫訪問提供的QtSql模組實現了資料庫和Qt應用程式的無縫整合,同時為開發人員提供了一套與平台無關和具體所用資料庫均無關的調用介面。這使得開發人員只需掌握基本的SQL語句,就能進行簡單的資料庫應用程式開發。如下表所示,QtSql模組由3部分組成。

層次 描述
驅動層 驅動層實現了特定資料庫與SQL介面的底層橋接。
SQL介面層 SQL介面層提供了資料庫類的訪問
使用者介面層 使用者介面層提供從資料庫資料到用於資料庫表示的表單的映射

筆者有過在linux基於ncurses開發圖形介面的經驗。那項目要求提供記錄查詢功能,當時寫那個就很費腦。控制項都自己封裝,Qt的使用者介面層仍夠完美的展示出資料庫資訊,這樣的話開發人員就不用苦於設計表格控制項了。

二、資料庫驅動
Qt支援資料庫驅動以外掛程式的形式添加,當我們開發的時候,首先必須明確使用哪種資料庫。目前Qt支援的資料庫類型如下:

我們也可以通過代碼來查看本機Qt支援的資料庫。

如果想要使用QtSql模組,則必須在工程檔案上加入一行:

QT += sql

否則無法包含標頭檔<QtSql>

    qDebug() << "Available drivers:";    QStringList drivers = QSqlDatabase::drivers();    qDebug() << drivers;

運行程式,可以顯示現在所有能用的資料庫驅動了。

Available drivers:("QSQLITE")

三、簡單的應用程式

最近在做考勤機,那麼就以這個為例子吧。

    if(!QSqlDatabase::drivers().contains("QSQLITE"))    {        //如果資料庫驅動裡沒有SQLite,則錯誤警告        QMessageBox::critical(this, tr("資料庫警告"), tr("系統需添加SQLite資料庫驅動"), QMessageBox::Cancel);    }    QSqlError error = db_Init();    if(error.type() != QSqlError::NoError)    {        showError(error);        return;    }

我使用的是SQLite資料庫,所以要先確認下系統是否已安裝該驅動,錯誤則出現訊息對話方塊提示。

我在db_Init() 建立一張表,並且添加了一些資料。 接下來查看資料庫資料,驗證是否添加正確

QSqlError MainWindow::db_Init(){    //QSqlDatabase::database("syscfg.dat").close();    //QSqlDatabase::removeDatabase("syscfg.dat");    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加資料庫驅動    db.setDatabaseName(":memory:");       //資料庫檔案名,setDatabaseName(":memory:")指的是記憶體資料庫    if(!db.open())    {        //如果開啟失敗        return db.lastError();    }    //建立人員組別表,2個參量 組別ID 和組別名稱    QSqlQuery query;    if(!query.exec("CREATE TABLE table_group(group_id INTEGER PRIMARY KEY, group_name VCHAR(10))"))    {        return query.lastError();    }    //添加資料    query.exec("INSERT INTO table_group VALUES(1, 'teacher')");    query.exec("INSERT INTO table_group VALUES(2, 'student')");    //查看資料庫    query.exec("SELECT * FROM table_group");    while(query.next())         {        int group_id = query.value(0).toInt();        QString group_name = query.value(1).toString();        qDebug() << "group id=" << group_id;        qDebug() << "group name=" << group_name;    }    return QSqlError();}

注釋已經很詳細了,這裡只涉及了簡單的SQL語句的使用。

執行程式後,可以看到我們對資料庫的操作是正確的。

group id= 1 group name= "teacher" group id= 2 group name= "student" 

就先寫到這吧,明天繼續。 在這裡祝大家節日快樂~~

在這裡附上程式原始碼下載連結:qt_SQLite資料庫簡單應用

以上純屬個人學習筆記,如果哪裡錯了,希望提出。願和大家一起共同學習,一起進步。我的郵箱地址是:xzy@yingzhi8.com



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.