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 };
62 explicit QSqlDriver(QObject *parent =
nullptr);
64 virtual bool isOpen()
const;
65 bool isOpenError()
const;
67 virtual bool beginTransaction();
68 virtual bool commitTransaction();
69 virtual bool rollbackTransaction();
70 virtual QStringList tables(QSql::TableType tableType)
const;
71 virtual QSqlIndex primaryIndex(
const QString &tableName)
const;
72 virtual QSqlRecord record(
const QString &tableName)
const;
73 virtual QString formatValue(
const QSqlField &field,
bool trimStrings =
false)
const;
75 virtual QString escapeIdentifier(
const QString &identifier, IdentifierType type)
const;
76 virtual QString sqlStatement(StatementType type,
const QString &tableName,
77 const QSqlRecord &rec,
bool preparedStatement)
const;
79 QSqlError lastError()
const;
81 virtual QVariant handle()
const;
82 virtual bool hasFeature(DriverFeature f)
const = 0;
83 virtual void close() = 0;
84 virtual QSqlResult *createResult()
const = 0;
86 virtual bool open(
const QString &db,
87 const QString &user = QString(),
88 const QString &password = QString(),
89 const QString &host = QString(),
91 const QString &connOpts = QString()) = 0;
92 virtual bool subscribeToNotification(
const QString &name);
93 virtual bool unsubscribeFromNotification(
const QString &name);
94 virtual QStringList subscribedToNotifications()
const;
96 virtual bool isIdentifierEscaped(
const QString &identifier, IdentifierType type)
const;
97 virtual QString stripDelimiters(
const QString &identifier, IdentifierType type)
const;
99 void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
100 QSql::NumericalPrecisionPolicy numericalPrecisionPolicy()
const;
102 DbmsType dbmsType()
const;
103 virtual int maximumIdentifierLength(IdentifierType type)
const;
105 QString connectionName()
const;
108 virtual bool cancelQuery();
111 void notification(
const QString &name, QSqlDriver::NotificationSource source,
const QVariant &payload);
114 QSqlDriver(QSqlDriverPrivate &dd, QObject *parent =
nullptr);
115 virtual void setOpen(
bool o);
116 virtual void setOpenError(
bool e);
117 virtual void setLastError(
const QSqlError& e);
121 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 } }))