關于 Qt中數據庫簡單學習教程
OT 數據庫是本文要介紹的內容,主要是來了解QT中的數據庫的學習。Qt中使用QtSql模塊實現了對數據庫的***支持,這個模塊是一組類的集合,使用這個模塊我們需要加入頭文件#include <QtSql>,而在工程文件中需要加入一行代碼:
- QT += sql
QSqlDatabase 數據庫
QSqlQuery 執行sql相關語句事務是數據庫的一個重要功能,所謂事務是用戶定義的一個數據庫操作序列,這些操作要么全做要么全不做,是一個不可分割的工作單位。在Qt中用transaction()開始一個事務操作,用commit()
函數或rollback()函數進行結束。commit()表示提交,即提交事務的所有操作。具體地說就是將事務中所有對數據庫的更新寫回到數據庫,事務正常結束rollback()表示回滾,即在事務運行的過程中發生了某種故障,事務不能繼續進行,系統將事務中對數據庫的所有已完成的操作全部撤銷,回滾到事務開始時的狀態。
QSqlDatabase::database()返回程序前面所生成的連接的QSqlDatabase對象。hasFeature()函數可以查看一個數據庫是否支持事務。
Qt中使用了自己的機制來避免使用SQL語句,它為我們提供了更簡單的數據庫操作和數據顯示模型。它們分別是只讀的QSqlQueryModel,操作單表的QSqlTableModel和以及可以支持外鍵的QSqlRelationalTableModel。
要想使其可讀寫,需要自己的類繼承自QSqlQueryModel,并且重寫setData() 和 flags() 兩個函數。如果我們要改變數據的顯示,就要重寫data() 函數。
QSqlTableModel,該類提供了一個可讀寫單張SQL表的可編輯數據模型。可修改,插入,刪除,查詢,和排序。
這個模型可以將所有修改先保存到model中,只有當我們執行提交修改后,才會真正寫入數據庫。當然這也是因為我們在最開始設置了它的保存策略:
- model->setEditStrategy(QSqlTableModel::OnManualSubmit);
OnManualSubmit表明我們要提交修改才能使其生效。
QSqlRelationalTableModel,該類為單張的數據庫表提供了一個可編輯的數據模型,它支持外鍵。
在Qt中的QSqlRelationalDelegate委托類就能實現修改相關表。我們只需添加加一行代碼:
- ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView));
- QT += xml
QtXml Module它們主要是服務于兩種操作XML文檔的方法:DOM和SAX。Dom(Document Object Model,即文檔對象模型)把XML文檔轉換成應用程序可以遍歷的樹形結構,這樣便可以隨機訪問其中的節點。它的缺點是需要將整個XML文檔讀入內存,消耗內存較多。
在QDom中,是將整個XML文件讀到內存中的doc對象中的。然后使用節點(QDomNode )操作doc對象,像XML說明,元素,屬性,文本等等都被看做是節點,這樣就使得操作XML文檔變得很簡單,我們只需通過轉換函數將節點轉換成相應的類型,如
- QDomElement e = n.toElement();
如果你只想讀取并顯示整個XML文檔,那么SAX是很好的選擇,因為它提供了比DOM更簡單的接口,并且它不需要將整個XML文檔一次性讀入內存,這樣便可以用來讀取較大的文件。
在Qt的QtXml模塊中提供了一個QXmlSimpleReader的類,它便是基于SAX的XML解析器。這個解析器是基于事件的,但這些事件由它自身進行關聯,我們并不需要進行設置。我們只需知道,當解析器解析一個XML的元素時,就會執行相應的事件,我們只需要重寫這些事件處理函數,就能讓它按照我們想法進行解析。
小結:關于 Qt 數據庫簡單學習教程的內容介紹完了,希望通過本文的學習能對你有所幫助!