Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qsqldriver.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QSQLDRIVER_H
6#define QSQLDRIVER_H
7
8#include <QtSql/qtsqlglobal.h>
9#include <QtCore/qobject.h>
10#include <QtCore/qstring.h>
11#include <QtCore/qstringlist.h>
12
13// clazy:excludeall=qproperty-without-notify
15
16
17class QSqlDatabase;
19class QSqlError;
20class QSqlField;
21class QSqlIndex;
22class QSqlRecord;
23class QSqlResult;
24class QVariant;
25
26class Q_SQL_EXPORT QSqlDriver : public QObject
27{
28 friend class QSqlDatabase;
29 friend class QSqlDatabasePrivate;
30 friend class QSqlResultPrivate;
31 Q_OBJECT
32 Q_PROPERTY(QSql::NumericalPrecisionPolicy numericalPrecisionPolicy READ numericalPrecisionPolicy WRITE setNumericalPrecisionPolicy)
33 Q_DECLARE_PRIVATE(QSqlDriver)
34
35public:
36 enum DriverFeature { Transactions, QuerySize, BLOB, Unicode, PreparedQueries,
37 NamedPlaceholders, PositionalPlaceholders, LastInsertId,
38 BatchOperations, SimpleLocking, LowPrecisionNumbers,
39 EventNotifications, FinishQuery, MultipleResultSets, CancelQuery };
40
41 enum StatementType { WhereStatement, SelectStatement, UpdateStatement,
42 InsertStatement, DeleteStatement };
43
44 enum IdentifierType { FieldName, TableName };
45
46 enum NotificationSource { UnknownSource, SelfSource, OtherSource };
47
48 enum DbmsType {
49 UnknownDbms,
50 MSSqlServer,
51 MySqlServer,
52 PostgreSQL,
53 Oracle,
54 Sybase,
55 SQLite,
56 Interbase,
57 DB2,
58 MimerSQL,
59 };
60
61 explicit QSqlDriver(QObject *parent = nullptr);
62 ~QSqlDriver();
63 virtual bool isOpen() const;
64 bool isOpenError() const;
65
66 virtual bool beginTransaction();
67 virtual bool commitTransaction();
68 virtual bool rollbackTransaction();
69 virtual QStringList tables(QSql::TableType tableType) const;
70 virtual QSqlIndex primaryIndex(const QString &tableName) const;
71 virtual QSqlRecord record(const QString &tableName) const;
72 virtual QString formatValue(const QSqlField &field, bool trimStrings = false) const;
73
74 virtual QString escapeIdentifier(const QString &identifier, IdentifierType type) const;
75 virtual QString sqlStatement(StatementType type, const QString &tableName,
76 const QSqlRecord &rec, bool preparedStatement) const;
77
78 QSqlError lastError() const;
79
80 virtual QVariant handle() const;
81 virtual bool hasFeature(DriverFeature f) const = 0;
82 virtual void close() = 0;
83 virtual QSqlResult *createResult() const = 0;
84
85 virtual bool open(const QString &db,
86 const QString &user = QString(),
87 const QString &password = QString(),
88 const QString &host = QString(),
89 int port = -1,
90 const QString &connOpts = QString()) = 0;
91 virtual bool subscribeToNotification(const QString &name);
92 virtual bool unsubscribeFromNotification(const QString &name);
93 virtual QStringList subscribedToNotifications() const;
94
95 virtual bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const;
96 virtual QString stripDelimiters(const QString &identifier, IdentifierType type) const;
97
98 void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
99 QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
100
101 DbmsType dbmsType() const;
102 virtual int maximumIdentifierLength(IdentifierType type) const;
103
104 QString connectionName() const;
105
106public Q_SLOTS:
107 virtual bool cancelQuery();
108
109Q_SIGNALS:
110 void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload);
111
112protected:
113 QSqlDriver(QSqlDriverPrivate &dd, QObject *parent = nullptr);
114 virtual void setOpen(bool o);
115 virtual void setOpenError(bool e);
116 virtual void setLastError(const QSqlError& e);
117
118
119private:
120 Q_DISABLE_COPY(QSqlDriver)
121};
122
123QT_END_NAMESPACE
124
125#endif // QSQLDRIVER_H
static QSqlDatabasePrivate * shared_null()
void init(const QString &type)
QSqlDatabasePrivate(QSqlDriver *dr)
static QSqlDatabase database(const QString &name, bool open)
QSqlDatabasePrivate(const QSqlDatabasePrivate &other)
static void removeDatabase(const QString &name)
static void invalidateDb(const QSqlDatabase &db, const QString &name, bool doWarn=true)
QSql::NumericalPrecisionPolicy precisionPolicy
static void addDatabase(const QSqlDatabase &db, const QString &name)
void copy(const QSqlDatabasePrivate *other)
The QSqlDatabase class handles a connection to a database.
The QSqlDriverCreatorBase class is the base class for SQL driver factories.
The QSqlDriverCreator class is a template class that provides a SQL driver factory for a specific dri...
QSqlDriver * createObject() const override
\reimp
The QSqlDriverPlugin class provides an abstract base for custom QSqlDriver plugins.
The QSqlDriver class is an abstract base class for accessing specific SQL databases.
Definition qsqldriver.h:27
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2568
#define qCWarning(category,...)
#define Q_STATIC_LOGGING_CATEGORY(name,...)
Q_GLOBAL_STATIC_WITH_ARGS(PermissionStatusHash, g_permissionStatusHash,({ { qMetaTypeId< QCameraPermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QMicrophonePermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QBluetoothPermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QContactsPermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QCalendarPermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QLocationPermission >(), Qt::PermissionStatus::Undetermined } }))
#define CHECK_QCOREAPPLICATION
#define CHECK_QCOREAPPLICATION_RETVAL
#define QSqlDriverFactoryInterface_iid
static QString defaultConnectionName() noexcept
static constexpr const char defaultConnection[]