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 QSQLDATABASE_H
5#define QSQLDATABASE_H
6
7#include <QtSql/qtsqlglobal.h>
8#include <QtCore/qmetaobject.h>
9#include <QtCore/qstring.h>
10
11// clazy:excludeall=qproperty-without-notify
12QT_BEGIN_NAMESPACE
13
14
15class QSqlError;
16class QSqlDriver;
17class QSqlIndex;
18class QSqlRecord;
19class QSqlQuery;
20class QSqlDatabasePrivate;
21class QThread;
22
23class Q_SQL_EXPORT QSqlDriverCreatorBase
24{
25public:
26 virtual ~QSqlDriverCreatorBase();
27 virtual QSqlDriver *createObject() const = 0;
28};
29
30template <class T>
31class QSqlDriverCreator : public QSqlDriverCreatorBase
32{
33public:
34 QSqlDriver *createObject() const override { return new T; }
35};
36
37class Q_SQL_EXPORT QSqlDatabase
38{
39 Q_GADGET
40 Q_PROPERTY(QSql::NumericalPrecisionPolicy numericalPrecisionPolicy READ numericalPrecisionPolicy WRITE setNumericalPrecisionPolicy)
41
42public:
43
44 QSqlDatabase();
45 QSqlDatabase(const QSqlDatabase &other);
46 ~QSqlDatabase();
47
48 QSqlDatabase &operator=(const QSqlDatabase &other);
49
50 bool open();
51 bool open(const QString& user, const QString& password);
52 void close();
53 bool isOpen() const;
54 bool isOpenError() const;
55 QStringList tables(QSql::TableType type = QSql::Tables) const;
56 QSqlIndex primaryIndex(const QString& tablename) const;
57 QSqlRecord record(const QString& tablename) const;
58#if QT_DEPRECATED_SINCE(6, 6)
59 QT_DEPRECATED_VERSION_X_6_6("Use QSqlQuery::exec() instead.")
60 QSqlQuery exec(const QString& query = QString()) const;
61#endif
62 QSqlError lastError() const;
63 bool isValid() const;
64
65 bool transaction();
66 bool commit();
67 bool rollback();
68
69 void setDatabaseName(const QString& name);
70 void setUserName(const QString& name);
71 void setPassword(const QString& password);
72 void setHostName(const QString& host);
73 void setPort(int p);
74 void setConnectOptions(const QString& options = QString());
75 QString databaseName() const;
76 QString userName() const;
77 QString password() const;
78 QString hostName() const;
79 QString driverName() const;
80 int port() const;
81 QString connectOptions() const;
82 QString connectionName() const;
83 void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
84 QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
85 bool moveToThread(QThread *targetThread);
86 QThread *thread() const;
87
88 QSqlDriver* driver() const;
89
90 static const char *defaultConnection;
91
92 static QSqlDatabase addDatabase(const QString& type,
93 const QString& connectionName = QLatin1StringView(defaultConnection));
94 static QSqlDatabase addDatabase(QSqlDriver* driver,
95 const QString& connectionName = QLatin1StringView(defaultConnection));
96 static QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString& connectionName);
97 static QSqlDatabase cloneDatabase(const QString &other, const QString& connectionName);
98 static QSqlDatabase database(const QString& connectionName = QLatin1StringView(defaultConnection),
99 bool open = true);
100 static void removeDatabase(const QString& connectionName);
101 static bool contains(const QString& connectionName = QLatin1StringView(defaultConnection));
102 static QStringList drivers();
103 static QStringList connectionNames();
104 static void registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator);
105 static bool isDriverAvailable(const QString &name);
106
107protected:
108 explicit QSqlDatabase(const QString& type);
109 explicit QSqlDatabase(QSqlDriver* driver);
110
111private:
112 friend class QSqlDatabasePrivate;
113 QSqlDatabasePrivate *d;
114};
115
116#ifndef QT_NO_DEBUG_STREAM
117Q_SQL_EXPORT QDebug operator<<(QDebug, const QSqlDatabase &);
118#endif
119
120QT_END_NAMESPACE
121
122#endif // QSQLDATABASE_H
123

Provided by KDAB

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

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