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 FirebirdSQL,
60 };
61
62 explicit QSqlDriver(QObject *parent = nullptr);
63 ~QSqlDriver();
64 virtual bool isOpen() const;
65 bool isOpenError() const;
66
67 virtual bool beginTransaction();
68 virtual bool commitTransaction();
69 virtual bool rollbackTransaction();
70 virtual QStringList tables(QSql::TableType tableType) const;
71 virtual QSqlIndex primaryIndex(const QString &tableName) const;
72 virtual QSqlRecord record(const QString &tableName) const;
73 virtual QString formatValue(const QSqlField &field, bool trimStrings = false) const;
74
75 virtual QString escapeIdentifier(const QString &identifier, IdentifierType type) const;
76 virtual QString sqlStatement(StatementType type, const QString &tableName,
77 const QSqlRecord &rec, bool preparedStatement) const;
78
79 QSqlError lastError() const;
80
81 virtual QVariant handle() const;
82 virtual bool hasFeature(DriverFeature f) const = 0;
83 virtual void close() = 0;
84 virtual QSqlResult *createResult() const = 0;
85
86 virtual bool open(const QString &db,
87 const QString &user = QString(),
88 const QString &password = QString(),
89 const QString &host = QString(),
90 int port = -1,
91 const QString &connOpts = QString()) = 0;
92 virtual bool subscribeToNotification(const QString &name);
93 virtual bool unsubscribeFromNotification(const QString &name);
94 virtual QStringList subscribedToNotifications() const;
95
96 virtual bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const;
97 virtual QString stripDelimiters(const QString &identifier, IdentifierType type) const;
98
99 void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
100 QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
101
102 DbmsType dbmsType() const;
103 virtual int maximumIdentifierLength(IdentifierType type) const;
104
105 QString connectionName() const;
106
107public Q_SLOTS:
108 virtual bool cancelQuery();
109
110Q_SIGNALS:
111 void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload);
112
113protected:
114 QSqlDriver(QSqlDriverPrivate &dd, QObject *parent = nullptr);
115 virtual void setOpen(bool o);
116 virtual void setOpenError(bool e);
117 virtual void setLastError(const QSqlError& e);
118
119
120private:
121 Q_DISABLE_COPY(QSqlDriver)
122};
123
124QT_END_NAMESPACE
125
126#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
Combined button and popup list for selecting options.
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2620
#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[]