Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-13 09:07:50

0001 // Copyright (C) 2016 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 
0004 #ifndef QSQLDRIVER_H
0005 #define QSQLDRIVER_H
0006 
0007 #include <QtSql/qtsqlglobal.h>
0008 #include <QtCore/qobject.h>
0009 #include <QtCore/qstring.h>
0010 #include <QtCore/qstringlist.h>
0011 
0012 // clazy:excludeall=qproperty-without-notify
0013 QT_BEGIN_NAMESPACE
0014 
0015 
0016 class QSqlDatabase;
0017 class QSqlDriverPrivate;
0018 class QSqlError;
0019 class QSqlField;
0020 class QSqlIndex;
0021 class QSqlRecord;
0022 class QSqlResult;
0023 class QVariant;
0024 
0025 class Q_SQL_EXPORT QSqlDriver : public QObject
0026 {
0027     friend class QSqlDatabase;
0028     friend class QSqlDatabasePrivate;
0029     friend class QSqlResultPrivate;
0030     Q_OBJECT
0031     Q_PROPERTY(QSql::NumericalPrecisionPolicy numericalPrecisionPolicy READ numericalPrecisionPolicy WRITE setNumericalPrecisionPolicy)
0032     Q_DECLARE_PRIVATE(QSqlDriver)
0033 
0034 public:
0035     enum DriverFeature { Transactions, QuerySize, BLOB, Unicode, PreparedQueries,
0036                          NamedPlaceholders, PositionalPlaceholders, LastInsertId,
0037                          BatchOperations, SimpleLocking, LowPrecisionNumbers,
0038                          EventNotifications, FinishQuery, MultipleResultSets, CancelQuery };
0039 
0040     enum StatementType { WhereStatement, SelectStatement, UpdateStatement,
0041                          InsertStatement, DeleteStatement };
0042 
0043     enum IdentifierType { FieldName, TableName };
0044 
0045     enum NotificationSource { UnknownSource, SelfSource, OtherSource };
0046 
0047     enum DbmsType {
0048         UnknownDbms,
0049         MSSqlServer,
0050         MySqlServer,
0051         PostgreSQL,
0052         Oracle,
0053         Sybase,
0054         SQLite,
0055         Interbase,
0056         DB2,
0057         MimerSQL,
0058     };
0059 
0060     explicit QSqlDriver(QObject *parent = nullptr);
0061     ~QSqlDriver();
0062     virtual bool isOpen() const;
0063     bool isOpenError() const;
0064 
0065     virtual bool beginTransaction();
0066     virtual bool commitTransaction();
0067     virtual bool rollbackTransaction();
0068     virtual QStringList tables(QSql::TableType tableType) const;
0069     virtual QSqlIndex primaryIndex(const QString &tableName) const;
0070     virtual QSqlRecord record(const QString &tableName) const;
0071     virtual QString formatValue(const QSqlField &field, bool trimStrings = false) const;
0072 
0073     virtual QString escapeIdentifier(const QString &identifier, IdentifierType type) const;
0074     virtual QString sqlStatement(StatementType type, const QString &tableName,
0075                                  const QSqlRecord &rec, bool preparedStatement) const;
0076 
0077     QSqlError lastError() const;
0078 
0079     virtual QVariant handle() const;
0080     virtual bool hasFeature(DriverFeature f) const = 0;
0081     virtual void close() = 0;
0082     virtual QSqlResult *createResult() const = 0;
0083 
0084     virtual bool open(const QString &db,
0085                       const QString &user = QString(),
0086                       const QString &password = QString(),
0087                       const QString &host = QString(),
0088                       int port = -1,
0089                       const QString &connOpts = QString()) = 0;
0090     virtual bool subscribeToNotification(const QString &name);
0091     virtual bool unsubscribeFromNotification(const QString &name);
0092     virtual QStringList subscribedToNotifications() const;
0093 
0094     virtual bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const;
0095     virtual QString stripDelimiters(const QString &identifier, IdentifierType type) const;
0096 
0097     void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
0098     QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
0099 
0100     DbmsType dbmsType() const;
0101     virtual int maximumIdentifierLength(IdentifierType type) const;
0102 
0103     QString connectionName() const;
0104 
0105 public Q_SLOTS:
0106     virtual bool cancelQuery();
0107 
0108 Q_SIGNALS:
0109     void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload);
0110 
0111 protected:
0112     QSqlDriver(QSqlDriverPrivate &dd, QObject *parent = nullptr);
0113     virtual void setOpen(bool o);
0114     virtual void setOpenError(bool e);
0115     virtual void setLastError(const QSqlError& e);
0116 
0117 
0118 private:
0119     Q_DISABLE_COPY(QSqlDriver)
0120 };
0121 
0122 QT_END_NAMESPACE
0123 
0124 #endif // QSQLDRIVER_H