Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-28 09:26:22

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 QSQLDATABASE_H
0006 #define QSQLDATABASE_H
0007 
0008 #include <QtSql/qtsqlglobal.h>
0009 #include <QtCore/qmetaobject.h>
0010 #include <QtCore/qstring.h>
0011 
0012 // clazy:excludeall=qproperty-without-notify
0013 QT_BEGIN_NAMESPACE
0014 
0015 
0016 class QSqlError;
0017 class QSqlDriver;
0018 class QSqlIndex;
0019 class QSqlRecord;
0020 class QSqlQuery;
0021 class QSqlDatabasePrivate;
0022 class QThread;
0023 
0024 class Q_SQL_EXPORT QSqlDriverCreatorBase
0025 {
0026 public:
0027     virtual ~QSqlDriverCreatorBase();
0028     virtual QSqlDriver *createObject() const = 0;
0029 };
0030 
0031 template <class T>
0032 class QSqlDriverCreator : public QSqlDriverCreatorBase
0033 {
0034 public:
0035     QSqlDriver *createObject() const override { return new T; }
0036 };
0037 
0038 struct QSqlDatabaseDefaultConnectionName
0039 {
0040     // separate class because of the static inline constexpr variable
0041     static constexpr const char defaultConnection[] = "qt_sql_default_connection";
0042     static QString defaultConnectionName() noexcept
0043     {
0044         using namespace Qt::StringLiterals;
0045         return u"qt_sql_default_connection"_s;
0046     }
0047 };
0048 
0049 class Q_SQL_EXPORT QSqlDatabase : public QSqlDatabaseDefaultConnectionName
0050 {
0051     Q_GADGET
0052     Q_PROPERTY(QSql::NumericalPrecisionPolicy numericalPrecisionPolicy READ numericalPrecisionPolicy WRITE setNumericalPrecisionPolicy)
0053 
0054 public:
0055 
0056     QSqlDatabase();
0057     QSqlDatabase(const QSqlDatabase &other);
0058     ~QSqlDatabase();
0059 
0060     QSqlDatabase &operator=(const QSqlDatabase &other);
0061 
0062     bool open();
0063     bool open(const QString& user, const QString& password);
0064     void close();
0065     bool isOpen() const;
0066     bool isOpenError() const;
0067     QStringList tables(QSql::TableType type = QSql::Tables) const;
0068     QSqlIndex primaryIndex(const QString& tablename) const;
0069     QSqlRecord record(const QString& tablename) const;
0070 #if QT_DEPRECATED_SINCE(6, 6)
0071     QT_DEPRECATED_VERSION_X_6_6("Use QSqlQuery::exec() instead.")
0072     QSqlQuery exec(const QString& query = QString()) const;
0073 #endif
0074     QSqlError lastError() const;
0075     bool isValid() const;
0076 
0077     bool transaction();
0078     bool commit();
0079     bool rollback();
0080 
0081     void setDatabaseName(const QString& name);
0082     void setUserName(const QString& name);
0083     void setPassword(const QString& password);
0084     void setHostName(const QString& host);
0085     void setPort(int p);
0086     void setConnectOptions(const QString& options = QString());
0087     QString databaseName() const;
0088     QString userName() const;
0089     QString password() const;
0090     QString hostName() const;
0091     QString driverName() const;
0092     int port() const;
0093     QString connectOptions() const;
0094     QString connectionName() const;
0095     void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
0096     QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
0097     bool moveToThread(QThread *targetThread);
0098     QThread *thread() const;
0099 
0100     QSqlDriver* driver() const;
0101 
0102 #if QT_SQL_REMOVED_SINCE(6, 10)
0103     static const char *defaultConnection;
0104 #endif
0105 
0106     static QSqlDatabase addDatabase(const QString& type,
0107                                  const QString &connectionName = defaultConnectionName());
0108     static QSqlDatabase addDatabase(QSqlDriver* driver,
0109                                  const QString &connectionName = defaultConnectionName());
0110     static QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString &connectionName);
0111     static QSqlDatabase cloneDatabase(const QString &other, const QString &connectionName);
0112     static QSqlDatabase database(const QString &connectionName = defaultConnectionName(),
0113                                  bool open = true);
0114     static void removeDatabase(const QString &connectionName);
0115     static bool contains(const QString &connectionName = defaultConnectionName());
0116     static QStringList drivers();
0117     static QStringList connectionNames();
0118     static void registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator);
0119     static bool isDriverAvailable(const QString &name);
0120 
0121 protected:
0122     explicit QSqlDatabase(const QString& type);
0123     explicit QSqlDatabase(QSqlDriver* driver);
0124 
0125 private:
0126     friend class QSqlDatabasePrivate;
0127     QSqlDatabasePrivate *d;
0128 };
0129 
0130 #ifndef QT_NO_DEBUG_STREAM
0131 Q_SQL_EXPORT QDebug operator<<(QDebug, const QSqlDatabase &);
0132 #endif
0133 
0134 QT_END_NAMESPACE
0135 
0136 #endif // QSQLDATABASE_H