日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【Qt】Qt数据库驱动层

發布時間:2024/4/24 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Qt】Qt数据库驱动层 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. Qt驅動層
    • 02. QSqlDriver
    • 03. QSqlDriverCreator
    • 04. QSqlDriverCreatorBase
    • 05. QSqlDriverPlugin
    • 06. QSqlResult
    • 07. 附錄

01. Qt驅動層

驅動層為具體的數據庫和SQL接口層之間提供了底層的橋梁,主要類包括QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin和QSqlResult。

02. QSqlDriver

QSqlDriver是訪問具體SQL數據庫的抽象基類,不能直接使用。如果要創建自定義的數據庫驅動,可以根據需要重寫QSqlDriver類的純虛函數和虛函數。

該類不能直接使用,如果要使用使用QSqlDatabase代替。

QSqlDatabase負責加載和管理數據庫驅動插件。當某個數據庫添加時,相應的數據庫驅動插件會被加載。QSqlDatabase依靠驅動插件為QSqlDriver和QSqlResult提供接口。

QSqlDriver是定義了SQL數據庫功能的抽象基類。

公有成員方法

QSqlDriver(QObject *parent = nullptr) virtual ~QSqlDriver() virtual bool beginTransaction() virtual void close() = 0 virtual bool commitTransaction() virtual QSqlResult * createResult() const = 0 virtual QString escapeIdentifier(const QString &identifier, QSqlDriver::IdentifierType type) const virtual QString formatValue(const QSqlField &field, bool trimStrings = false) const virtual QVariant handle() const virtual bool hasFeature(QSqlDriver::DriverFeature feature) const = 0 virtual bool isIdentifierEscaped(const QString &identifier, QSqlDriver::IdentifierType type) const virtual bool isOpen() const bool isOpenError() const QSqlError lastError() const QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const virtual bool open(const QString &db, const QString &user = QString(), const QString &password = QString(), const QString &host = QString(), int port = -1, const QString &options = QString()) = 0 virtual QSqlIndex primaryIndex(const QString &tableName) const virtual QSqlRecord record(const QString &tableName) const virtual bool rollbackTransaction() void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy) virtual QString sqlStatement(QSqlDriver::StatementType type, const QString &tableName, const QSqlRecord &rec, bool preparedStatement) const virtual QString stripDelimiters(const QString &identifier, QSqlDriver::IdentifierType type) const virtual bool subscribeToNotification(const QString &name) virtual QStringList subscribedToNotifications() const virtual QStringList tables(QSql::TableType tableType) const virtual bool unsubscribeFromNotification(const QString &name)

03. QSqlDriverCreator

QSqlDriverCreator是為指定驅動類型提供SQL驅動工廠的模板類。QSqlDriverCreator實例化對象的類型T就是QSqlDriver的子類。

成員方法:

[override virtual] QSqlDriver *QSqlDriverCreator::createObject() const Reimplemented from QSqlDriverCreatorBase::createObject().

04. QSqlDriverCreatorBase

QSqlDriverCreatorBase是SQL驅動工廠的基類。

重新實現createObject()以返回要提供的特定QSqlDriver子類的實例。

成員方法:

virtual ~QSqlDriverCreatorBase() virtual QSqlDriver *createObject() const = 0

05. QSqlDriverPlugin

QSqlDriverPlugin類提供自定義QSqlDriver插件的抽象基類。

SQL數據庫驅動插件是一個能被QT動態加載的自定義SQL數據庫驅動插件創建變得容易的簡單插件接口。

寫SQL插件可以通過派生QSqlDriverPlugin類實現,重寫純虛函數create(),使用宏Q_PLUGIN_METADATA()導出類。

成員方法:

QSqlDriverPlugin(QObject *parent = nullptr) virtual ~QSqlDriverPlugin() virtual QSqlDriver *create(const QString &key) = 0

06. QSqlResult

QSqlResult類提供了訪問具體SQL數據庫數據的抽象接口。

通常會使用QSqlQuery代替QSqlResult,因為QSqlQuery提供了具體數據庫的QSqlResult實現的通用包裝。

如果通過派生QSqlDriver實現自定義SQL驅動,需要提供實現了全部純虛函數和需要的虛函數的自定義的QSqlResult子類。

成員方法:

QSqlResult(const QSqlDriver *db) void addBindValue(const QVariant &val, QSql::ParamType paramType) int at() const virtual void bindValue(int index, const QVariant &val, QSql::ParamType paramType) virtual void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType) QSql::ParamType bindValueType(int index) const QSql::ParamType bindValueType(const QString &placeholder) const QSqlResult::BindingSyntax bindingSyntax() const QVariant boundValue(int index) const QVariant boundValue(const QString &placeholder) const int boundValueCount() const QString boundValueName(int index) const QVector<QVariant> & boundValues() const void clear() virtual QVariant data(int index) = 0 const QSqlDriver * driver() const virtual bool exec() QString executedQuery() const virtual bool fetch(int index) = 0 virtual bool fetchFirst() = 0 virtual bool fetchLast() = 0 virtual bool fetchNext() virtual bool fetchPrevious() bool hasOutValues() const bool isActive() const bool isForwardOnly() const virtual bool isNull(int index) = 0 bool isSelect() const bool isValid() const QSqlError lastError() const virtual QVariant lastInsertId() const QString lastQuery() const virtual int numRowsAffected() = 0 virtual bool prepare(const QString &query) virtual QSqlRecord record() const virtual bool reset(const QString &query) = 0 void resetBindCount() virtual bool savePrepare(const QString &query) virtual void setActive(bool active) virtual void setAt(int index) virtual void setForwardOnly(bool forward) virtual void setLastError(const QSqlError &error) virtual void setQuery(const QString &query) virtual void setSelect(bool select) virtual int size() = 0

07. 附錄

7.1 關鍵字:How to Write Your Own Database Driver

7.2 關鍵字:How to Create Qt Plugins

總結

以上是生活随笔為你收集整理的【Qt】Qt数据库驱动层的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。