驅動層為具體的資料庫和sql介面層之間提供了底層的橋梁,主要類包括qt sql模組中的qsqldriver、qsqldrivercreator、qsqldrivercreatorbase、qsqldriverplugin和qsqlresult。
qsqldriver是訪問具體sql資料庫的抽象基類,不能直接使用。如果要建立自定義的資料庫驅動,可以根據需要重寫qsqldriver類的純虛函式和虛函式。
自定義資料庫驅動
qsqldatabase負責載入和管理資料庫驅動外掛程式。當某個資料庫新增時,相應的資料庫驅動外掛程式會被載入。qsqldatabase依靠驅動外掛程式為qsqldriver和qsqlresult提供介面。
qsqldriver是定義了sql資料庫功能的抽象基類。
qsqldrivercreator是為指定驅動型別提供sql驅動工廠的模板類。qsqldrivercreator例項化物件的型別t就是qsqldriver的子類。
[virtual] qsqldriver *qsqldrivercreator::createobject() const
對qsqldrivercreatorbase::createobject()函式的重寫
qsqldrivercreatorbase是sql驅動工廠的基類。
[pure virtual] qsqldriver *qsqldrivercreatorbase::createobject() const
重寫這個函式返回乙個qsqldriver子類的例項
qsqldriverplugin類提供自定義qsqldriver外掛程式的抽象基類。
sql資料庫驅動外掛程式是乙個能被qt動態載入的自定義sql資料庫驅動外掛程式建立變得容易的簡單外掛程式介面。
寫sql外掛程式可以通過派生qsqldriverplugin類實現,重寫純虛函式create(),使用巨集q_plugin_metadata()匯出類。
pure virtual] qsqldriver *qsqldriverplugin::create(const qstring &key)
建立並返回乙個驅動名為key的qsqldriver物件
qsqlresult類提供了訪問具體sql資料庫資料的抽象介面。
通常會使用qsqlquery代替qsqlresult,因為qsqlquery提供了具體資料庫的qsqlresult實現的通用包裝。
如果通過派生qsqldriver實現自定義sql驅動,需要提供實現了全部純虛函式和需要的虛函式的自定義的qsqlresult子類。
[protected] qsqlresult::qsqlresult(const qsqldriver *db)
使用資料庫驅動db構建乙個qsqlresult物件
Qt資料庫之訪問 SQLite
sqlite 是乙個開源的嵌入式關聯式資料庫,實現自包容 零配置 支援事務的sql資料庫引擎。其特點是高度便攜 使用方便 結構緊湊 高效 可靠。整個資料庫 定義 表 索引和資料本身 都在宿主主機上儲存在乙個單一的檔案中。sqlite 支援跨平台,同乙個 sqlite 的資料庫檔案,可以在 windo...
Qt使用sqlite資料庫的問題
之前使用資料庫用的都是mysql,覺得挺方便的,但最近做的程式要在linux開發板上跑,就使用了qt自帶的輕量級資料庫sqlite,但使用過程中遇到了一些問題 標頭檔案 include qsqldatabase db public explicit widget qwidget parent 0 w...
在Qt中使用SQLite資料庫
sqlite sql 是一款開源輕量級的資料庫軟體,不需要server,可以整合在其他軟體中,非常適合嵌入式系統。qt5以上版本可以直接使用sqlite qt自帶驅動 引入sql模組 在qt專案檔案 pro檔案 中,加入sql模組 qt sql include include include檢查連線...