Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-09 09:21:35

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