File indexing completed on 2026-04-01 08:29:34
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 struct QSqlDatabaseDefaultConnectionName
0038 {
0039
0040 static constexpr const char defaultConnection[] = "qt_sql_default_connection";
0041 static QString defaultConnectionName() noexcept
0042 {
0043 using namespace Qt::StringLiterals;
0044 return u"qt_sql_default_connection"_s;
0045 }
0046 };
0047
0048 class Q_SQL_EXPORT QSqlDatabase : public QSqlDatabaseDefaultConnectionName
0049 {
0050 Q_GADGET
0051 Q_PROPERTY(QSql::NumericalPrecisionPolicy numericalPrecisionPolicy READ numericalPrecisionPolicy WRITE setNumericalPrecisionPolicy)
0052
0053 public:
0054
0055 QSqlDatabase();
0056 QSqlDatabase(const QSqlDatabase &other);
0057 ~QSqlDatabase();
0058
0059 QSqlDatabase &operator=(const QSqlDatabase &other);
0060
0061 bool open();
0062 bool open(const QString& user, const QString& password);
0063 void close();
0064 bool isOpen() const;
0065 bool isOpenError() const;
0066 QStringList tables(QSql::TableType type = QSql::Tables) const;
0067 QSqlIndex primaryIndex(const QString& tablename) const;
0068 QSqlRecord record(const QString& tablename) const;
0069 #if QT_DEPRECATED_SINCE(6, 6)
0070 QT_DEPRECATED_VERSION_X_6_6("Use QSqlQuery::exec() instead.")
0071 QSqlQuery exec(const QString& query = QString()) const;
0072 #endif
0073 QSqlError lastError() const;
0074 bool isValid() const;
0075
0076 bool transaction();
0077 bool commit();
0078 bool rollback();
0079
0080 void setDatabaseName(const QString& name);
0081 void setUserName(const QString& name);
0082 void setPassword(const QString& password);
0083 void setHostName(const QString& host);
0084 void setPort(int p);
0085 void setConnectOptions(const QString& options = QString());
0086 QString databaseName() const;
0087 QString userName() const;
0088 QString password() const;
0089 QString hostName() const;
0090 QString driverName() const;
0091 int port() const;
0092 QString connectOptions() const;
0093 QString connectionName() const;
0094 void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
0095 QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
0096 bool moveToThread(QThread *targetThread);
0097 QThread *thread() const;
0098
0099 QSqlDriver* driver() const;
0100
0101 #if QT_SQL_REMOVED_SINCE(6, 10)
0102 static const char *defaultConnection;
0103 #endif
0104
0105 static QSqlDatabase addDatabase(const QString& type,
0106 const QString &connectionName = defaultConnectionName());
0107 static QSqlDatabase addDatabase(QSqlDriver* driver,
0108 const QString &connectionName = defaultConnectionName());
0109 static QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString &connectionName);
0110 static QSqlDatabase cloneDatabase(const QString &other, const QString &connectionName);
0111 static QSqlDatabase database(const QString &connectionName = defaultConnectionName(),
0112 bool open = true);
0113 static void removeDatabase(const QString &connectionName);
0114 static bool contains(const QString &connectionName = defaultConnectionName());
0115 static QStringList drivers();
0116 static QStringList connectionNames();
0117 static void registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator);
0118 static bool isDriverAvailable(const QString &name);
0119
0120 protected:
0121 explicit QSqlDatabase(const QString& type);
0122 explicit QSqlDatabase(QSqlDriver* driver);
0123
0124 private:
0125 friend class QSqlDatabasePrivate;
0126 QSqlDatabasePrivate *d;
0127 };
0128
0129 #ifndef QT_NO_DEBUG_STREAM
0130 Q_SQL_EXPORT QDebug operator<<(QDebug, const QSqlDatabase &);
0131 #endif
0132
0133 QT_END_NAMESPACE
0134
0135 #endif