File indexing completed on 2026-09-28 09:26:22
0001
0002
0003
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
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
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