En esta página

QSqlResult Class

La clase QSqlResult proporciona una interfaz abstracta para acceder a datos de bases de datos SQL específicas. Más...

Cabecera: #include <QSqlResult>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake: QT += sql

Funciones Públicas

virtual ~QSqlResult()
virtual QVariant handle() const

Tipos Protegidos

enum BindingSyntax { PositionalBinding, NamedBinding }

Funciones Protegidas

QSqlResult(const QSqlDriver *db)
void addBindValue(const QVariant &val, QSql::ParamType paramType)
int at() const
virtual void bindValue(int index, const QVariant &val, QSql::ParamType paramType)
virtual void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)
QSql::ParamType bindValueType(int index) const
QSql::ParamType bindValueType(const QString &placeholder) const
QSqlResult::BindingSyntax bindingSyntax() const
QVariant boundValue(int index) const
QVariant boundValue(const QString &placeholder) const
int boundValueCount() const
QString boundValueName(int index) const
QStringList boundValueNames() const
QVariantList boundValues() const
QVariantList &boundValues()
void clear()
virtual QVariant data(int index) = 0
const QSqlDriver *driver() const
virtual bool exec()
QString executedQuery() const
virtual bool fetch(int index) = 0
virtual bool fetchFirst() = 0
virtual bool fetchLast() = 0
virtual bool fetchNext()
virtual bool fetchPrevious()
bool hasOutValues() const
bool isActive() const
bool isForwardOnly() const
virtual bool isNull(int index) = 0
bool isSelect() const
bool isValid() const
QSqlError lastError() const
virtual QVariant lastInsertId() const
QString lastQuery() const
virtual int numRowsAffected() = 0
virtual bool prepare(const QString &query)
virtual QSqlRecord record() const
virtual bool reset(const QString &query) = 0
void resetBindCount()
virtual bool savePrepare(const QString &query)
virtual void setActive(bool active)
virtual void setAt(int index)
virtual void setForwardOnly(bool forward)
virtual void setLastError(const QSqlError &error)
virtual void setQuery(const QString &query)
virtual void setSelect(bool select)
virtual int size() = 0

Descripción Detallada

Normalmente, se usaría QSqlQuery en lugar de QSqlResult, ya que QSqlQuery proporciona una envoltura genérica para implementaciones de QSqlResult específicas de la base de datos.

Si está implementando su propio controlador SQL (subclasificando QSqlDriver), necesitará proporcionar su propia subclase QSqlResult que implemente todas las funciones virtuales puras y otras funciones virtuales que necesite.

Ver también QSqlDriver.

Documentación de Tipos de Miembros

enum QSqlResult::BindingSyntax

Este tipo enum especifica las diferentes sintaxis para especificar marcadores de posición en consultas preparadas.

ConstanteValorDescripción
QSqlResult::PositionalBinding0Utiliza la sintaxis posicional estilo ODBC, con "?" como marcadores de posición.
QSqlResult::NamedBinding1Utilizar la sintaxis de estilo Oracle con marcadores de posición con nombre (por ejemplo, ":id").

Véase también bindingSyntax().

Documentación de las funciones miembro

[explicit protected] QSqlResult::QSqlResult(const QSqlDriver *db)

Crea un QSqlResult utilizando el controlador de base de datos db. El objeto se inicializa a un estado inactivo.

Véase también isActive() y driver().

[virtual noexcept] QSqlResult::~QSqlResult()

Destruye el objeto y libera los recursos asignados.

[protected] void QSqlResult::addBindValue(const QVariant &val, QSql::ParamType paramType)

Vincula el valor val del tipo de parámetro paramType a la siguiente posición disponible en el registro (fila) actual.

Véase también bindValue().

[protected] int QSqlResult::at() const

Devuelve la posición actual (basada en cero) de la fila del resultado. Puede devolver los valores especiales QSql::BeforeFirstRow o QSql::AfterLastRow.

Véase también setAt() y isValid().

[virtual protected] void QSqlResult::bindValue(int index, const QVariant &val, QSql::ParamType paramType)

Vincula el valor val del tipo de parámetro paramType a la posición index en el registro (fila) actual.

Véase también addBindValue().

[virtual protected] void QSqlResult::bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)

Vincula el valor val del tipo de parámetro paramType al nombre placeholder en el registro (fila) actual.

Nota: La vinculación de un marcador de posición indefinido provocará un comportamiento indefinido.

Se trata de una función sobrecargada.

Véase también QSqlQuery::bindValue().

[protected] QSql::ParamType QSqlResult::bindValueType(int index) const

Devuelve el tipo de parámetro para el valor enlazado en la posición index.

Véase también boundValue().

[protected] QSql::ParamType QSqlResult::bindValueType(const QString &placeholder) const

Devuelve el tipo de parámetro para el valor vinculado con el nombre placeholder dado.

Se trata de una función sobrecargada.

[protected] QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const

Devuelve la sintaxis de enlace utilizada por las consultas preparadas.

[protected] QVariant QSqlResult::boundValue(int index) const

Devuelve el valor vinculado en la posición index del registro (fila) actual.

Véase también bindValue() y boundValues().

[protected] QVariant QSqlResult::boundValue(const QString &placeholder) const

Devuelve el valor vinculado al nombre placeholder dado en el registro (fila) actual.

Se trata de una función sobrecargada.

Véase también bindValueType().

[protected] int QSqlResult::boundValueCount() const

Devuelve el número de valores ligados en el resultado.

Véase también boundValues().

[protected] QString QSqlResult::boundValueName(int index) const

Devuelve el nombre del valor vinculado en la posición index del registro (fila) actual.

Véase también boundValue() y boundValueNames().

[protected] QStringList QSqlResult::boundValueNames() const

Devuelve los nombres de todos los valores vinculados.

Véase también boundValue() y boundValueName().

[protected] QVariantList QSqlResult::boundValues() const

Devuelve una lista de los valores vinculados del resultado para el registro (fila) actual.

Véase también boundValueCount().

[protected] QVariantList &QSqlResult::boundValues()

Devuelve una referencia mutable a la lista de valores vinculados del resultado para el registro (fila) actual.

Se trata de una función sobrecargada.

Véase también boundValueCount().

[protected] void QSqlResult::clear()

Borra todo el conjunto de resultados y libera los recursos asociados.

[pure virtual protected] QVariant QSqlResult::data(int index)

Devuelve los datos del campo index en la fila actual como QVariant. Esta función sólo se llama si el resultado está en un estado activo y está posicionado en un registro válido y index es no negativo. Las clases derivadas deben reimplementar esta función y devolver el valor del campo index, o QVariant() si no se puede determinar.

[protected] const QSqlDriver *QSqlResult::driver() const

Devuelve el controlador asociado al resultado. Este es el objeto que se pasó al constructor.

[virtual protected] bool QSqlResult::exec()

Ejecuta la consulta, devolviendo true si tiene éxito; en caso contrario devuelve false.

Véase también prepare().

[protected] QString QSqlResult::executedQuery() const

Devuelve la consulta que se ejecutó realmente. Esto puede diferir de la consulta que se pasó, por ejemplo, si se utilizaron valores vinculados con una consulta preparada y la base de datos subyacente no admite consultas preparadas.

Véase también exec() y setQuery().

[pure virtual protected] bool QSqlResult::fetch(int index)

Posiciona el resultado en una fila arbitraria (basada en cero) index.

Esta función sólo se llama si el resultado está en un estado activo. Las clases derivadas deben reimplementar esta función y posicionar el resultado en la fila index, y llamar a setAt() con un valor apropiado. Devuelve true para indicar éxito, o false para indicar fallo.

Véase también isActive(), fetchFirst(), fetchLast(), fetchNext(), y fetchPrevious().

[pure virtual protected] bool QSqlResult::fetchFirst()

Posiciona el resultado en el primer registro (fila 0) del resultado.

Esta función sólo se llama si el resultado está en estado activo. Las clases derivadas deben reimplementar esta función y posicionar el resultado en el primer registro, y llamar a setAt() con un valor apropiado. Devuelve true para indicar éxito, o false para indicar fallo.

Véase también fetch() y fetchLast().

[pure virtual protected] bool QSqlResult::fetchLast()

Posiciona el resultado en el último registro (última fila) del resultado.

Esta función sólo se llama si el resultado está en estado activo. Las clases derivadas deben reimplementar esta función y posicionar el resultado en el último registro, y llamar a setAt() con un valor apropiado. Devuelve true para indicar éxito, o false para indicar fallo.

Véase también fetch() y fetchFirst().

[virtual protected] bool QSqlResult::fetchNext()

Posiciona el resultado en el siguiente registro (fila) disponible en el resultado.

Esta función sólo se llama si el resultado está en estado activo. La implementación por defecto llama a fetch() con el siguiente índice. Las clases derivadas pueden reimplementar esta función y posicionar el resultado al siguiente registro de alguna otra manera, y llamar a setAt() con un valor apropiado. Devuelve true para indicar éxito, o false para indicar fallo.

Véase también fetch() y fetchPrevious().

[virtual protected] bool QSqlResult::fetchPrevious()

Posiciona el resultado en el registro (fila) anterior del resultado.

Esta función sólo se llama si el resultado está en estado activo. La implementación por defecto llama a fetch() con el índice anterior. Las clases derivadas pueden reimplementar esta función y posicionar el resultado en el siguiente registro de alguna otra forma, y llamar a setAt() con un valor apropiado. Devuelve true para indicar éxito, o false para indicar fallo.

[virtual] QVariant QSqlResult::handle() const

Devuelve el manejador de base de datos de bajo nivel para este conjunto de resultados envuelto en un QVariant o un QVariant inválido 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 el resultado (por ejemplo, si lo borra).

Atención: El manejador puede ser NULL si el resultado aún no se ha ejecutado.

Advertencia: PostgreSQL: en modo forward-only, el handle de QSqlResult puede cambiar después de llamar a fetch(), fetchFirst(), fetchLast(), fetchNext(), fetchPrevious(), nextResult().

El manejador devuelto aquí depende de la base de datos, debe consultar el nombre de tipo de la variante antes de acceder a ella.

Este ejemplo recupera el manejador de un resultado sqlite:

QSqlDatabase db = QSqlDatabase::database("sales");
QSqlQuery query("SELECT NAME, DOB FROM EMPLOYEES", db);

QVariant v = query.result()->handle();
if (v.isValid() && qstrcmp(v.typeName(), "sqlite3_stmt*") == 0) {
    // v.data() returns a pointer to the handle
    sqlite3_stmt *handle = *static_cast<sqlite3_stmt **>(v.data());
    if (handle) {
        // ...
    }
}

Este fragmento devuelve el manejador para PostgreSQL o MySQL:

if (qstrcmp(v.typeName(), "PGresult*") == 0) {
    PGresult *handle = *static_cast<PGresult **>(v.data());
    if (handle) {
        // ...
        }
}

if (qstrcmp(v.typeName(), "MYSQL_STMT*") == 0) {
    MYSQL_STMT *handle = *static_cast<MYSQL_STMT **>(v.data());
    if (handle) {
        // ...
        }
    }

Véase también QSqlDriver::handle().

[protected] bool QSqlResult::hasOutValues() const

Devuelve true si al menos uno de los valores vinculados de la consulta es un QSql::Out o un QSql::InOut; en caso contrario devuelve false.

Véase también bindValueType().

[protected] bool QSqlResult::isActive() const

Devuelve true si el resultado tiene registros que recuperar; en caso contrario devuelve false.

[protected] bool QSqlResult::isForwardOnly() const

Devuelve true si sólo puede desplazarse hacia adelante por el conjunto de resultados; en caso contrario, devuelve false.

Véase también setForwardOnly().

[pure virtual protected] bool QSqlResult::isNull(int index)

Devuelve true si el campo en la posición index de la fila actual es nulo; en caso contrario devuelve false.

[protected] bool QSqlResult::isSelect() const

Devuelve true si el resultado actual proviene de una sentencia SELECT; en caso contrario devuelve false.

Véase también setSelect().

[protected] bool QSqlResult::isValid() const

Devuelve true si el resultado está posicionado en un registro válido (es decir, el resultado no está posicionado antes del primer o después del último registro); en caso contrario devuelve false.

Véase también at().

[protected] QSqlError QSqlResult::lastError() const

Devuelve el último error asociado al resultado.

Véase también setLastError().

[virtual protected] QVariant QSqlResult::lastInsertId() const

Devuelve el ID del objeto de la fila insertada más reciente si la base de datos lo admite. Se devolverá un QVariant inválido si la consulta no insertó ningún valor o si la base de datos no devuelve el id. Si la inserción ha afectado a más de una fila, el comportamiento es indefinido.

Tenga en cuenta que para bases de datos Oracle se devolverá el ROWID de la fila, mientras que para bases de datos MySQL se devolverá el campo de autoincremento de la fila.

Véase también QSqlDriver::hasFeature().

[protected] QString QSqlResult::lastQuery() const

Devuelve el texto de la consulta SQL actual, o una cadena vacía si no existe.

Véase también setQuery().

[pure virtual protected] int QSqlResult::numRowsAffected()

Devuelve el número de filas afectadas por la última consulta ejecutada, o -1 si no se puede determinar o si la consulta es una sentencia SELECT.

Véase también size().

[virtual protected] bool QSqlResult::prepare(const QString &query)

Prepara la consulta query para su ejecución; normalmente, la consulta utilizará marcadores de posición para que pueda ejecutarse repetidamente. Devuelve true si la consulta se ha preparado correctamente; en caso contrario devuelve false.

Véase también exec().

[virtual protected] QSqlRecord QSqlResult::record() const

Devuelve el registro actual si la consulta está activa; en caso contrario, devuelve un QSqlRecord vacío.

La implementación por defecto siempre devuelve un QSqlRecord vacío.

Véase también isActive().

[pure virtual protected] bool QSqlResult::reset(const QString &query)

Establece el resultado para utilizar la sentencia SQL query para la posterior recuperación de datos.

Las clases derivadas deben reimplementar esta función y aplicar la query a la base de datos. Esta función sólo se llama después de que el resultado se establece en un estado inactivo y se posiciona antes del primer registro del nuevo resultado. Las clases derivadas deben devolver true si la consulta se ha realizado correctamente y está lista para ser utilizada, o false en caso contrario.

Véase también setQuery().

[protected] void QSqlResult::resetBindCount()

Restablece el número de parámetros de enlace.

[virtual protected] bool QSqlResult::savePrepare(const QString &query)

Prepara la consulta dada query, utilizando la funcionalidad de la base de datos subyacente siempre que sea posible. Devuelve true si la consulta se ha preparado correctamente; en caso contrario devuelve false.

Nota: Este método debería haberse llamado "safePrepare()".

Véase también prepare().

[virtual protected] void QSqlResult::setActive(bool active)

Esta función se proporciona para que las clases derivadas establezcan el estado activo interno en active.

Véase también isActive().

[virtual protected] void QSqlResult::setAt(int index)

Esta función se proporciona para que las clases derivadas establezcan la posición de fila interna (basada en cero) en index.

Véase también at().

[virtual protected] void QSqlResult::setForwardOnly(bool forward)

Establece el modo sólo hacia adelante en forward. Si forward es verdadero, sólo se permite fetchNext() para navegar por los resultados. Este modo necesita mucha menos memoria ya que los resultados no tienen que ser almacenados en caché. Por defecto, esta función está desactivada.

Establecer forward only en false es una sugerencia al motor de la base de datos, que tiene la última palabra sobre si un conjunto de resultados es forward only o scrollable. isForwardOnly() siempre devolverá el estado correcto del conjunto de resultados.

Nota: Llamar a setForwardOnly después de la ejecución de la consulta producirá resultados inesperados en el mejor de los casos, y fallos en el peor.

Nota: Para asegurarse de que la consulta forward-only se ha completado correctamente, la aplicación debe comprobar lastError() en busca de un error no sólo después de ejecutar la consulta, sino también después de navegar por los resultados de la consulta.

Advertencia: PostgreSQL: Mientras navega por los resultados de la consulta en modo forward-only, no ejecute ningún otro comando SQL en la misma conexión de base de datos. De lo contrario, se perderán los resultados de la consulta.

Véase también isForwardOnly(), fetchNext(), y QSqlQuery::setForwardOnly().

[virtual protected] void QSqlResult::setLastError(const QSqlError &error)

Esta función se proporciona para que las clases derivadas establezcan el último error en error.

Véase también lastError().

[virtual protected] void QSqlResult::setQuery(const QString &query)

Establece la consulta actual para el resultado en query. Debe llamar a reset() para ejecutar la consulta en la base de datos.

Véase también reset() y lastQuery().

[virtual protected] void QSqlResult::setSelect(bool select)

Esta función se proporciona a las clases derivadas para indicar si la sentencia actual es o no una sentencia SQL SELECT. El parámetro select debe ser verdadero si la sentencia es una sentencia SELECT; en caso contrario debe ser falso.

Véase también isSelect().

[pure virtual protected] int QSqlResult::size()

Devuelve el tamaño del resultado de SELECT, o -1 si no se puede determinar o si la consulta no es una sentencia SELECT.

Véase también numRowsAffected().

© 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.