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
4#ifndef QSQLDRIVER_H
5#define QSQLDRIVER_H
6
7#include <QtSql/qtsqlglobal.h>
8#include <QtCore/qobject.h>
9#include <QtCore/qstring.h>
10#include <QtCore/qstringlist.h>
11
12// clazy:excludeall=qproperty-without-notify
13QT_BEGIN_NAMESPACE
14
15
16class QSqlDatabase;
17class QSqlDriverPrivate;
18class QSqlError;
19class QSqlField;
20class QSqlIndex;
21class QSqlRecord;
22class QSqlResult;
23class QVariant;
24
25class Q_SQL_EXPORT QSqlDriver : public QObject
26{
27 friend class QSqlDatabase;
28 friend class QSqlResultPrivate;
29 Q_OBJECT
30 Q_PROPERTY(QSql::NumericalPrecisionPolicy numericalPrecisionPolicy READ numericalPrecisionPolicy WRITE setNumericalPrecisionPolicy)
31 Q_DECLARE_PRIVATE(QSqlDriver)
32
33public:
34 enum DriverFeature { Transactions, QuerySize, BLOB, Unicode, PreparedQueries,
35 NamedPlaceholders, PositionalPlaceholders, LastInsertId,
36 BatchOperations, SimpleLocking, LowPrecisionNumbers,
37 EventNotifications, FinishQuery, MultipleResultSets, CancelQuery };
38
39 enum StatementType { WhereStatement, SelectStatement, UpdateStatement,
40 InsertStatement, DeleteStatement };
41
42 enum IdentifierType { FieldName, TableName };
43
44 enum NotificationSource { UnknownSource, SelfSource, OtherSource };
45
46 enum DbmsType {
47 UnknownDbms,
48 MSSqlServer,
49 MySqlServer,
50 PostgreSQL,
51 Oracle,
52 Sybase,
53 SQLite,
54 Interbase,
55 DB2,
56 MimerSQL,
57 };
58
59 explicit QSqlDriver(QObject *parent = nullptr);
60 ~QSqlDriver();
61 virtual bool isOpen() const;
62 bool isOpenError() const;
63
64 virtual bool beginTransaction();
65 virtual bool commitTransaction();
66 virtual bool rollbackTransaction();
67 virtual QStringList tables(QSql::TableType tableType) const;
68 virtual QSqlIndex primaryIndex(const QString &tableName) const;
69 virtual QSqlRecord record(const QString &tableName) const;
70 virtual QString formatValue(const QSqlField &field, bool trimStrings = false) const;
71
72 virtual QString escapeIdentifier(const QString &identifier, IdentifierType type) const;
73 virtual QString sqlStatement(StatementType type, const QString &tableName,
74 const QSqlRecord &rec, bool preparedStatement) const;
75
76 QSqlError lastError() const;
77
78 virtual QVariant handle() const;
79 virtual bool hasFeature(DriverFeature f) const = 0;
80 virtual void close() = 0;
81 virtual QSqlResult *createResult() const = 0;
82
83 virtual bool open(const QString &db,
84 const QString &user = QString(),
85 const QString &password = QString(),
86 const QString &host = QString(),
87 int port = -1,
88 const QString &connOpts = QString()) = 0;
89 virtual bool subscribeToNotification(const QString &name);
90 virtual bool unsubscribeFromNotification(const QString &name);
91 virtual QStringList subscribedToNotifications() const;
92
93 virtual bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const;
94 virtual QString stripDelimiters(const QString &identifier, IdentifierType type) const;
95
96 void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
97 QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
98
99 DbmsType dbmsType() const;
100 virtual int maximumIdentifierLength(IdentifierType type) const;
101public Q_SLOTS:
102 virtual bool cancelQuery();
103
104Q_SIGNALS:
105 void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload);
106
107protected:
108 QSqlDriver(QSqlDriverPrivate &dd, QObject *parent = nullptr);
109 virtual void setOpen(bool o);
110 virtual void setOpenError(bool e);
111 virtual void setLastError(const QSqlError& e);
112
113
114private:
115 Q_DISABLE_COPY(QSqlDriver)
116};
117
118QT_END_NAMESPACE
119
120#endif // QSQLDRIVER_H
121

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

source code of qtbase/src/sql/kernel/qsqldriver.h