QSqlDriver Class
La clase QSqlDriver es una clase base abstracta para acceder a bases de datos SQL específicas. Más...
| Cabecera: | #include <QSqlDriver> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Sql)target_link_libraries(mytarget PRIVATE Qt6::Sql) |
| qmake: | QT += sql |
| Hereda: | QObject |
- Lista de todos los miembros, incluyendo los heredados
- QSqlDriver es parte de Clases de Base de Datos.
Tipos Públicos
| enum | DriverFeature { Transactions, QuerySize, BLOB, Unicode, PreparedQueries, …, CancelQuery } |
| enum | IdentifierType { FieldName, TableName } |
| enum | NotificationSource { UnknownSource, SelfSource, OtherSource } |
| enum | StatementType { WhereStatement, SelectStatement, UpdateStatement, InsertStatement, DeleteStatement } |
Propiedades
(since 6.8)numericalPrecisionPolicy : QSql::NumericalPrecisionPolicy
Funciones públicas
| QSqlDriver(QObject *parent = nullptr) | |
| virtual | ~QSqlDriver() |
| virtual bool | beginTransaction() |
| virtual void | close() = 0 |
| virtual bool | commitTransaction() |
(since 6.9) QString | connectionName() const |
| virtual QSqlResult * | createResult() const = 0 |
| virtual QString | escapeIdentifier(const QString &identifier, QSqlDriver::IdentifierType type) const |
| virtual QString | formatValue(const QSqlField &field, bool trimStrings = false) const |
| virtual QVariant | handle() const |
| virtual bool | hasFeature(QSqlDriver::DriverFeature feature) const = 0 |
| virtual bool | isIdentifierEscaped(const QString &identifier, QSqlDriver::IdentifierType type) const |
| virtual bool | isOpen() const |
| bool | isOpenError() const |
| QSqlError | lastError() const |
(since 6.0) virtual int | maximumIdentifierLength(QSqlDriver::IdentifierType type) const |
| QSql::NumericalPrecisionPolicy | numericalPrecisionPolicy() const |
| virtual bool | open(const QString &db, const QString &user = QString(), const QString &password = QString(), const QString &host = QString(), int port = -1, const QString &options = QString()) = 0 |
| virtual QSqlIndex | primaryIndex(const QString &tableName) const |
| virtual QSqlRecord | record(const QString &tableName) const |
| virtual bool | rollbackTransaction() |
| void | setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy) |
| virtual QString | sqlStatement(QSqlDriver::StatementType type, const QString &tableName, const QSqlRecord &rec, bool preparedStatement) const |
| virtual QString | stripDelimiters(const QString &identifier, QSqlDriver::IdentifierType type) const |
| virtual bool | subscribeToNotification(const QString &name) |
| virtual QStringList | subscribedToNotifications() const |
| virtual QStringList | tables(QSql::TableType tableType) const |
| virtual bool | unsubscribeFromNotification(const QString &name) |
Señales
| void | notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload) |
Funciones protegidas
| virtual void | setLastError(const QSqlError &error) |
| virtual void | setOpen(bool open) |
| virtual void | setOpenError(bool error) |
Descripción detallada
Esta clase no debe utilizarse directamente. Utilice QSqlDatabase en su lugar.
Si quieres crear tus propios controladores SQL, puedes subclasificar esta clase y reimplementar sus funciones virtuales puras y aquellas funciones virtuales que necesites. Vea Cómo escribir su propio controlador de base de datos para más información.
Véase también QSqlDatabase y QSqlResult.
Documentación de Tipos de Miembros
enum QSqlDriver::DriverFeature
Este enum contiene una lista de características que puede soportar un controlador. Utilice hasFeature() para consultar si una función está soportada o no. Algunas características dependen del servidor de base de datos, por lo que sólo pueden determinarse correctamente después de que la conexión a la base de datos se haya abierto correctamente con QSqlDatabase::open().
| Constante | Valor | Descripción |
|---|---|---|
QSqlDriver::Transactions | 0 | Si el controlador admite transacciones SQL. |
QSqlDriver::QuerySize | 1 | Si la base de datos es capaz de informar del tamaño de una consulta. Tenga en cuenta que algunas bases de datos no admiten la devolución del tamaño (es decir, el número de filas devueltas) de una consulta, en cuyo caso QSqlQuery::size() devolverá -1. |
QSqlDriver::BLOB | 2 | Si el controlador admite campos binarios de objetos grandes. |
QSqlDriver::Unicode | 3 | Si el controlador admite cadenas Unicode en caso de que el servidor de bases de datos lo haga. |
QSqlDriver::PreparedQueries | 4 | Si el controlador admite la ejecución de consultas preparadas. |
QSqlDriver::NamedPlaceholders | 5 | Si el controlador admite el uso de marcadores de posición con nombre. |
QSqlDriver::PositionalPlaceholders | 6 | Si el controlador admite el uso de marcadores de posición posicionales. |
QSqlDriver::LastInsertId | 7 | Si el controlador admite la devolución del Id de la última fila tocada. |
QSqlDriver::BatchOperations | 8 | Si el controlador admite operaciones por lotes, véase QSqlQuery::execBatch() |
QSqlDriver::SimpleLocking | 9 | Si el controlador no permite un bloqueo de escritura en una tabla mientras otras consultas tienen un bloqueo de lectura en ella. |
QSqlDriver::LowPrecisionNumbers | 10 | Si el controlador permite obtener valores numéricos con baja precisión. |
QSqlDriver::EventNotifications | 11 | Si el controlador soporta notificaciones de eventos de la base de datos. |
QSqlDriver::FinishQuery | 12 | Si el controlador puede realizar una limpieza de recursos de bajo nivel cuando se llama a QSqlQuery::finish(). |
QSqlDriver::MultipleResultSets | 13 | Si el controlador puede acceder a múltiples conjuntos de resultados devueltos por sentencias por lotes o procedimientos almacenados. |
QSqlDriver::CancelQuery | 14 | Si el controlador permite cancelar una consulta en ejecución. |
Puede encontrar más información sobre las características soportadas en la documentación del controladorQt SQL .
Véase también hasFeature().
enum QSqlDriver::IdentifierType
Este enum contiene una lista de tipos de identificadores SQL.
| Constante | Valor | Descripción |
|---|---|---|
QSqlDriver::FieldName | 0 | Un nombre de campo SQL |
QSqlDriver::TableName | 1 | Un nombre de tabla SQL |
enum QSqlDriver::NotificationSource
Este enum contiene una lista de fuentes de notificación SQL.
| Constante | Valor | Descripción |
|---|---|---|
QSqlDriver::UnknownSource | 0 | La fuente de notificación es desconocida |
QSqlDriver::SelfSource | 1 | La fuente de notificación es esta conexión |
QSqlDriver::OtherSource | 2 | La fuente de notificación es otra conexión |
enum QSqlDriver::StatementType
Este enum contiene una lista de tipos de sentencias (o cláusulas) SQL que el controlador puede crear.
| Constante | Valor | Descripción |
|---|---|---|
QSqlDriver::WhereStatement | 0 | Una sentencia SQL WHERE (por ejemplo, WHERE f = 5). |
QSqlDriver::SelectStatement | 1 | Una sentencia SQL SELECT (por ejemplo, SELECT f FROM t). |
QSqlDriver::UpdateStatement | 2 | Una sentencia SQL UPDATE (por ejemplo, UPDATE TABLE t set f = 1). |
QSqlDriver::InsertStatement | 3 | Una sentencia SQL INSERT (por ejemplo, INSERT INTO t (f) values (1)). |
QSqlDriver::DeleteStatement | 4 | Una sentencia SQL DELETE (por ejemplo, DELETE FROM t). |
Véase también sqlStatement().
Documentación de propiedades
[since 6.8] numericalPrecisionPolicy : QSql::NumericalPrecisionPolicy
Esta propiedad contiene la política de precisión para la conexión a la base de datos.
Nota: Establecer la política de precisión no afecta a las consultas actualmente activas.
Esta propiedad se introdujo en Qt 6.8.
Funciones de acceso:
| QSql::NumericalPrecisionPolicy | numericalPrecisionPolicy() const |
| void | setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy) |
Véase también QSql::NumericalPrecisionPolicy, QSqlQuery::numericalPrecisionPolicy, y QSqlDatabase::numericalPrecisionPolicy.
Documentación de las funciones miembro
[explicit] QSqlDriver::QSqlDriver(QObject *parent = nullptr)
Crea un nuevo controlador con la dirección parent.
[virtual noexcept] QSqlDriver::~QSqlDriver()
Destruye el objeto y libera los recursos asignados.
[virtual] bool QSqlDriver::beginTransaction()
Esta función es llamada para iniciar una transacción. Si tiene éxito, devuelve true, en caso contrario devuelve false. La implementación por defecto no hace nada y devuelve false.
Véase también commitTransaction() y rollbackTransaction().
[pure virtual] void QSqlDriver::close()
Las clases derivadas deben reimplementar esta función virtual pura para cerrar la conexión a la base de datos. Devuelve true en caso de éxito, false en caso de fallo.
Véase también open() y setOpen().
[virtual] bool QSqlDriver::commitTransaction()
Esta función es llamada para confirmar una transacción. Si tiene éxito, devuelve true, en caso contrario devuelve false. La implementación por defecto no hace nada y devuelve false.
Véase también beginTransaction() y rollbackTransaction().
[since 6.9] QString QSqlDriver::connectionName() const
Devuelve el nombre de la conexión a la base de datos por la que se creó el controlador con QSqlDatabase::addDatabase()
Esta función se introdujo en Qt 6.9.
[pure virtual] QSqlResult *QSqlDriver::createResult() const
Crea un resultado SQL vacío en la base de datos. Las clases derivadas deben reimplementar esta función y devolver al llamante un objeto QSqlResult apropiado para su base de datos.
[virtual] QString QSqlDriver::escapeIdentifier(const QString &identifier, QSqlDriver::IdentifierType type) const
Devuelve el identifier escapado según las reglas de la base de datos. identifier puede ser un nombre de tabla o de campo, dependiente de type.
La implementación por defecto no hace nada.
Véase también isIdentifierEscaped().
[virtual] QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings = false) const
Devuelve una representación de cadena del valor field para la base de datos. Se utiliza, por ejemplo, al construir sentencias INSERT y UPDATE.
La implementación por defecto devuelve el valor formateado como una cadena de acuerdo con las siguientes reglas:
- Si field son datos de carácter, el valor se devuelve entre comillas simples, lo cual es apropiado para muchas bases de datos SQL. Cualquier carácter entre comillas simples incrustado se escapa (se sustituye por dos caracteres entre comillas simples). Si trimStrings es verdadero (por defecto es falso), todos los espacios en blanco se eliminan del campo.
- Si field son datos de fecha/hora, el valor se formatea en formato ISO y se encierra entre comillas simples. Si los datos de fecha/hora no son válidos, se devuelve "NULL".
- Si field son datos de bytearray, y el controlador puede editar campos binarios, el valor se formatea como una cadena hexadecimal.
- Para cualquier otro tipo de campo, se llama a toString() sobre su valor y se devuelve el resultado de ésta.
Véase también QVariant::toString().
[virtual] QVariant QSqlDriver::handle() const
Devuelve el manejador de base de datos de bajo nivel envuelto en un QVariant o una variante inválida si no hay manejador.
Advertencia: Utilícelo con sumo cuidado y sólo si sabe lo que está haciendo.
Advertencia: El manejador devuelto aquí puede convertirse en un puntero obsoleto si se modifica la conexión (por ejemplo, si se cierra la conexión).
Atención: El "handle" puede ser NULL si la conexión aún no está abierta.
El manejador devuelto aquí depende de la base de datos, debería consultar el nombre del tipo de la variante antes de acceder a él.
Este ejemplo devuelve el "handle" de una conexión a sqlite:
QSqlDatabase db = QSqlDatabase::database(); QVariant v = db.driver()->handle(); if (v.isValid() && (qstrcmp(v.typeName(), "sqlite3*") == 0)) { // v.data() returns a pointer to the handle sqlite3 *handle = *static_cast<sqlite3 **>(v.data()); if (handle) { // ... } }
Este snippet devuelve el handle para PostgreSQL o MySQL:
if (qstrcmp(v.typeName(), "PGconn*") == 0) { PGconn *handle = *static_cast<PGconn **>(v.data()); if (handle) { // ... } } if (qstrcmp(v.typeName(), "MYSQL*") == 0) { MYSQL *handle = *static_cast<MYSQL **>(v.data()); if (handle) { // ... } }
Véase también QSqlResult::handle().
[pure virtual] bool QSqlDriver::hasFeature(QSqlDriver::DriverFeature feature) const
Devuelve true si el controlador soporta la característica feature; en caso contrario devuelve false.
Tenga en cuenta que algunas bases de datos necesitan ser open() antes de que esto pueda determinarse.
Véase también DriverFeature.
[virtual] bool QSqlDriver::isIdentifierEscaped(const QString &identifier, QSqlDriver::IdentifierType type) const
Devuelve si identifier está escapado de acuerdo con las reglas de la base de datos. identifier puede ser un nombre de tabla o de campo, dependiendo de type.
Reimplemente esta función si desea proporcionar su propia implementación en su subclase QSqlDriver,
Véase también stripDelimiters() y escapeIdentifier().
[virtual] bool QSqlDriver::isOpen() const
Devuelve true si la conexión a la base de datos está abierta; en caso contrario devuelve false.
bool QSqlDriver::isOpenError() const
Devuelve true si se ha producido un error al abrir la conexión a la base de datos; en caso contrario, devuelve false.
QSqlError QSqlDriver::lastError() const
Devuelve un objeto QSqlError que contiene información sobre el último error que se ha producido en la base de datos.
Véase también setLastError().
[virtual, since 6.0] int QSqlDriver::maximumIdentifierLength(QSqlDriver::IdentifierType type) const
Devuelve la longitud máxima para el identificador type según la configuración de la base de datos. Devuelve INT_MAX por defecto si no hay máximo para la base de datos.
Esta función se introdujo en Qt 6.0.
[signal] void QSqlDriver::notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload)
Esta señal se emite cuando la base de datos publica una notificación de evento a la que se suscribe el controlador. name identifica la notificación de evento, source indica la fuente de la señal, payload contiene los datos adicionales que se entregan opcionalmente con la notificación.
Véase también subscribeToNotification().
QSql::NumericalPrecisionPolicy QSqlDriver::numericalPrecisionPolicy() const
Devuelve la numericalPrecisionPolicy.
Nota: Función Getter para la propiedad numericalPrecisionPolicy.
Véase también setNumericalPrecisionPolicy().
[pure virtual] bool QSqlDriver::open(const QString &db, const QString &user = QString(), const QString &password = QString(), const QString &host = QString(), int port = -1, const QString &options = QString())
Las clases derivadas deben reimplementar esta función virtual pura para abrir una conexión a una base de datos en la base de datos db, utilizando el nombre de usuario user, la contraseña password, el host host, el puerto port y las opciones de conexión options.
La función debe devolver true en caso de éxito y false en caso de fallo.
Véase también setOpen().
[virtual] QSqlIndex QSqlDriver::primaryIndex(const QString &tableName) const
Devuelve el índice primario de la tabla tableName. Devuelve un QSqlIndex vacío si la tabla no tiene índice primario. La implementación por defecto devuelve un índice vacío.
[virtual] QSqlRecord QSqlDriver::record(const QString &tableName) const
Devuelve un QSqlRecord poblado con los nombres de los campos de la tabla tableName. Si no existe tal tabla, se devuelve un registro vacío. La implementación por defecto devuelve un registro vacío.
[virtual] bool QSqlDriver::rollbackTransaction()
Esta función es llamada para revertir una transacción. Si tiene éxito, devuelve true, en caso contrario devuelve false. La implementación por defecto no hace nada y devuelve false.
Véase también beginTransaction() y commitTransaction().
[virtual protected] void QSqlDriver::setLastError(const QSqlError &error)
Esta función se utiliza para establecer el valor del último error, error, que se ha producido en la base de datos.
Véase también lastError().
void QSqlDriver::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy)
Establece numericalPrecisionPolicy en precisionPolicy.
Nota: Función Setter para la propiedad numericalPrecisionPolicy.
Véase también numericalPrecisionPolicy().
[virtual protected] void QSqlDriver::setOpen(bool open)
Esta función establece el estado abierto de la base de datos en open. Las clases derivadas pueden utilizar esta función para informar del estado de open().
Véase también open() y setOpenError().
[virtual protected] void QSqlDriver::setOpenError(bool error)
Esta función establece el estado de error abierto de la base de datos en error. Las clases derivadas pueden utilizar esta función para informar del estado de open(). Observe que si error es verdadero, el estado abierto de la base de datos se establece en cerrado (es decir, isOpen() devuelve false).
Véase también isOpenError(), open(), y setOpen().
[virtual] QString QSqlDriver::sqlStatement(QSqlDriver::StatementType type, const QString &tableName, const QSqlRecord &rec, bool preparedStatement) const
Devuelve una sentencia SQL de tipo type para la tabla tableName con los valores de rec. Si preparedStatement es verdadero, la cadena contendrá marcadores de posición en lugar de valores.
La bandera generada en cada campo de rec determina si el campo se incluye en la sentencia generada.
Este método puede utilizarse para manipular tablas sin tener que preocuparse por dialectos SQL dependientes de la base de datos. En las sentencias no preparadas, los valores se escaparán correctamente.
En la sentencia WHERE, cada campo no nulo de rec especifica una condición de filtro de igualdad con el valor del campo o, si está preparado, un marcador de posición. Sin embargo, preparado o no, un campo nulo especifica la condición IS NULL y nunca introduce un marcador de posición. La aplicación no debe intentar vincular datos para el campo nulo durante la ejecución. El campo debe establecerse con un valor no nulo si se desea un marcador de posición. Además, dado que los campos no nulos especifican condiciones de igualdad y SQL NULL no es igual a nada, ni siquiera a sí mismo, generalmente no es útil vincular un null a un marcador de posición.
[virtual] QString QSqlDriver::stripDelimiters(const QString &identifier, QSqlDriver::IdentifierType type) const
Devuelve identifier sin los delimitadores inicial y final. identifier puede ser un nombre de tabla o de campo, en función de type. Si identifier no tiene caracteres delimitadores iniciales y finales, se devuelve identifier sin modificaciones.
Reimplemente esta función si desea proporcionar su propia implementación en su subclase QSqlDriver,
Véase también isIdentifierEscaped().
[virtual] bool QSqlDriver::subscribeToNotification(const QString &name)
Esta función se ejecuta para suscribirse a notificaciones de eventos de la base de datos. name identifica la notificación del evento.
Si tiene éxito, devuelve true, en caso contrario devuelve false.
La base de datos debe estar abierta cuando se llama a esta función. Cuando se cierra la base de datos llamando a close(), todas las notificaciones de eventos suscritas se cancelan automáticamente. Tenga en cuenta que llamar a open() en una base de datos ya abierta puede provocar implícitamente que se llame a close(), lo que hará que el controlador se dé de baja de todas las notificaciones de eventos.
Cuando una notificación de evento identificada por name es enviada por la base de datos, se emite la señal notification().
Reimplemente esta función si desea proporcionar soporte de notificación de eventos en su propia subclase QSqlDriver,
Véase también unsubscribeFromNotification(), subscribedToNotifications(), y QSqlDriver::hasFeature().
[virtual] QStringList QSqlDriver::subscribedToNotifications() const
Devuelve una lista de los nombres de las notificaciones de eventos a las que se está suscrito actualmente.
Reimplemente esta función si desea proporcionar soporte de notificación de eventos en su propia subclase QSqlDriver,
Véase también subscribeToNotification() y unsubscribeFromNotification().
[virtual] QStringList QSqlDriver::tables(QSql::TableType tableType) const
Devuelve una lista con los nombres de las tablas de la base de datos. La implementación por defecto devuelve una lista vacía.
El argumento tableType describe qué tipos de tablas deben devolverse. Debido a la compatibilidad binaria, la cadena contiene el valor del enum QSql::TableTypes como texto. Una cadena vacía debe tratarse como QSql::Tables por compatibilidad con versiones anteriores.
[virtual] bool QSqlDriver::unsubscribeFromNotification(const QString &name)
Esta función se llama para darse de baja de las notificaciones de eventos de la base de datos. name identifica la notificación del evento.
Si tiene éxito, devuelve true, en caso contrario devuelve false.
La base de datos debe estar abierta cuando se llame a esta función. Todas las notificaciones de eventos suscritas se dan de baja automáticamente cuando se llama a la función close().
Después de llamar a esta función, la señal notification() dejará de emitirse cuando una notificación de evento identificada por name sea publicada por la base de datos.
Reimplemente esta función si desea proporcionar soporte de notificación de eventos en su propia subclase QSqlDriver,
Véase también subscribeToNotification() y subscribedToNotifications().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.