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