驅動層爲具體的數據庫和SQL接口層之間提供了底層的橋樑,主要類包括Qt SQL模塊中的QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin和QSqlResult。html
QSqlDriver是訪問具體SQL數據庫的抽象基類,不能直接使用。若是要建立自定義的數據庫驅動,能夠根據須要重寫QSqlDriver類的純虛函數和虛函數。sql
自定義數據庫驅動數據庫
QSqlDatabase負責加載和管理數據庫驅動插件。當某個數據庫添加時,相應的數據庫驅動插件會被加載。QSqlDatabase依靠驅動插件爲QSqlDriver和QSqlResult提供接口。ide
QSqlDriver是定義了SQL數據庫功能的抽象基類。函數
QSqlDriverCreator是爲指定驅動類型提供SQL驅動工廠的模板類。QSqlDriverCreator<T>實例化對象的類型T就是QSqlDriver的子類。spa
[virtual] QSqlDriver *QSqlDriverCreator::createObject() const插件
對QSqlDriverCreatorBase::createObject()函數的重寫htm
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對象