28 friend class QSqlDatabase;
29 friend class QSqlDatabasePrivate;
30 friend class QSqlResultPrivate;
32 Q_PROPERTY(QSql::NumericalPrecisionPolicy numericalPrecisionPolicy READ numericalPrecisionPolicy WRITE setNumericalPrecisionPolicy)
33 Q_DECLARE_PRIVATE(QSqlDriver)
36 enum DriverFeature { Transactions, QuerySize, BLOB, Unicode, PreparedQueries,
37 NamedPlaceholders, PositionalPlaceholders, LastInsertId,
38 BatchOperations, SimpleLocking, LowPrecisionNumbers,
39 EventNotifications, FinishQuery, MultipleResultSets, CancelQuery };
41 enum StatementType { WhereStatement, SelectStatement, UpdateStatement,
42 InsertStatement, DeleteStatement };
44 enum IdentifierType { FieldName, TableName };
46 enum NotificationSource { UnknownSource, SelfSource, OtherSource };
61 explicit QSqlDriver(QObject *parent =
nullptr);
63 virtual bool isOpen()
const;
64 bool isOpenError()
const;
66 virtual bool beginTransaction();
67 virtual bool commitTransaction();
68 virtual bool rollbackTransaction();
69 virtual QStringList tables(QSql::TableType tableType)
const;
70 virtual QSqlIndex primaryIndex(
const QString &tableName)
const;
71 virtual QSqlRecord record(
const QString &tableName)
const;
72 virtual QString formatValue(
const QSqlField &field,
bool trimStrings =
false)
const;
74 virtual QString escapeIdentifier(
const QString &identifier, IdentifierType type)
const;
75 virtual QString sqlStatement(StatementType type,
const QString &tableName,
76 const QSqlRecord &rec,
bool preparedStatement)
const;
78 QSqlError lastError()
const;
80 virtual QVariant handle()
const;
81 virtual bool hasFeature(DriverFeature f)
const = 0;
82 virtual void close() = 0;
83 virtual QSqlResult *createResult()
const = 0;
85 virtual bool open(
const QString &db,
86 const QString &user = QString(),
87 const QString &password = QString(),
88 const QString &host = QString(),
90 const QString &connOpts = QString()) = 0;
91 virtual bool subscribeToNotification(
const QString &name);
92 virtual bool unsubscribeFromNotification(
const QString &name);
93 virtual QStringList subscribedToNotifications()
const;
95 virtual bool isIdentifierEscaped(
const QString &identifier, IdentifierType type)
const;
96 virtual QString stripDelimiters(
const QString &identifier, IdentifierType type)
const;
98 void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
99 QSql::NumericalPrecisionPolicy numericalPrecisionPolicy()
const;
101 DbmsType dbmsType()
const;
102 virtual int maximumIdentifierLength(IdentifierType type)
const;
104 QString connectionName()
const;
107 virtual bool cancelQuery();
110 void notification(
const QString &name, QSqlDriver::NotificationSource source,
const QVariant &payload);
113 QSqlDriver(QSqlDriverPrivate &dd, QObject *parent =
nullptr);
114 virtual void setOpen(
bool o);
115 virtual void setOpenError(
bool e);
116 virtual void setLastError(
const QSqlError& e);
120 Q_DISABLE_COPY(QSqlDriver)
Q_GLOBAL_STATIC_WITH_ARGS(PermissionStatusHash, g_permissionStatusHash,({ { qMetaTypeId< QCameraPermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QMicrophonePermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QBluetoothPermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QContactsPermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QCalendarPermission >(), Qt::PermissionStatus::Undetermined }, { qMetaTypeId< QLocationPermission >(), Qt::PermissionStatus::Undetermined } }))