QSqlResult Class
La classe QSqlResult fournit une interface abstraite permettant d'accéder à des données provenant de bases de données SQL spécifiques. Plus d'informations...
| En-tête : | #include <QSqlResult> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Sql)target_link_libraries(mytarget PRIVATE Qt6::Sql) |
| qmake : | QT += sql |
- Liste de tous les membres, y compris les membres hérités
- QSqlResult fait partie des classes de bases de données.
Fonctions publiques
| virtual | ~QSqlResult() |
| virtual QVariant | handle() const |
Types protégés
| enum | BindingSyntax { PositionalBinding, NamedBinding } |
Fonctions protégées
| 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 |
Description détaillée
Normalement, vous devriez utiliser QSqlQuery au lieu de QSqlResult, puisque QSqlQuery fournit une enveloppe générique pour les implémentations de QSqlResult spécifiques aux bases de données.
Si vous implémentez votre propre pilote SQL (en sous-classant QSqlDriver), vous devrez fournir votre propre sous-classe de QSqlResult qui implémente toutes les fonctions virtuelles pures et les autres fonctions virtuelles dont vous avez besoin.
Voir également QSqlDriver.
Documentation sur les types de membres
enum QSqlResult::BindingSyntax
Ce type d'énumération spécifie les différentes syntaxes de spécification des espaces réservés dans les requêtes préparées.
| Constante | Valeur | Description de la syntaxe |
|---|---|---|
QSqlResult::PositionalBinding | 0 | Utilise la syntaxe positionnelle de type ODBC, avec des " ?" comme caractères de remplacement. |
QSqlResult::NamedBinding | 1 | Utiliser la syntaxe Oracle avec des espaces réservés nommés (par exemple, ":id"). |
Voir également bindingSyntax().
Documentation des fonctions membres
[explicit protected] QSqlResult::QSqlResult(const QSqlDriver *db)
Crée un QSqlResult en utilisant le pilote de base de données db. L'objet est initialisé à un état inactif.
Voir aussi isActive() et driver().
[virtual noexcept] QSqlResult::~QSqlResult()
Détruit l'objet et libère les ressources allouées.
[protected] void QSqlResult::addBindValue(const QVariant &val, QSql::ParamType paramType)
Relie la valeur val du paramètre de type paramType à la prochaine position disponible dans l'enregistrement (ligne) en cours.
Voir aussi bindValue().
[protected] int QSqlResult::at() const
Renvoie la position de ligne actuelle (basée sur zéro) du résultat. Peut renvoyer les valeurs spéciales QSql::BeforeFirstRow ou QSql::AfterLastRow.
Voir aussi setAt() et isValid().
[virtual protected] void QSqlResult::bindValue(int index, const QVariant &val, QSql::ParamType paramType)
Relie la valeur val du paramètre de type paramType à la position index dans l'enregistrement (ligne) en cours.
Voir aussi addBindValue().
[virtual protected] void QSqlResult::bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)
Relie la valeur val du paramètre de type paramType au nom placeholder dans l'enregistrement actuel (ligne).
Remarque : la liaison d'un caractère générique non défini entraînera un comportement non défini.
Il s'agit d'une fonction surchargée.
Voir également QSqlQuery::bindValue().
[protected] QSql::ParamType QSqlResult::bindValueType(int index) const
Renvoie le type de paramètre pour la valeur liée à la position index.
Voir également boundValue().
[protected] QSql::ParamType QSqlResult::bindValueType(const QString &placeholder) const
Renvoie le type de paramètre pour la valeur liée au nom placeholder donné.
Il s'agit d'une fonction surchargée.
[protected] QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const
Renvoie la syntaxe de liaison utilisée par les requêtes préparées.
[protected] QVariant QSqlResult::boundValue(int index) const
Renvoie la valeur liée à la position index dans l'enregistrement actuel (ligne).
Voir aussi bindValue() et boundValues().
[protected] QVariant QSqlResult::boundValue(const QString &placeholder) const
Renvoie la valeur liée au nom placeholder donné dans l'enregistrement actuel (ligne).
Il s'agit d'une fonction surchargée.
Voir aussi bindValueType().
[protected] int QSqlResult::boundValueCount() const
Renvoie le nombre de valeurs liées dans le résultat.
Voir aussi boundValues().
[protected] QString QSqlResult::boundValueName(int index) const
Renvoie le nom de la valeur liée à la position index dans l'enregistrement (ligne) en cours.
Voir également boundValue() et boundValueNames().
[protected] QStringList QSqlResult::boundValueNames() const
Renvoie les noms de toutes les valeurs liées.
Voir aussi boundValue() et boundValueName().
[protected] QVariantList QSqlResult::boundValues() const
Renvoie une liste des valeurs liées du résultat pour l'enregistrement actuel (ligne).
Voir également boundValueCount().
[protected] QVariantList &QSqlResult::boundValues()
Renvoie une référence mutable à la liste des valeurs liées du résultat pour l'enregistrement actuel (ligne).
Il s'agit d'une fonction surchargée.
Voir également boundValueCount().
[protected] void QSqlResult::clear()
Efface l'ensemble des résultats et libère toutes les ressources associées.
[pure virtual protected] QVariant QSqlResult::data(int index)
Renvoie les données du champ index de la ligne courante sous la forme d'un QVariant. Cette fonction n'est appelée que si le résultat est actif et positionné sur un enregistrement valide et si index est non négatif. Les classes dérivées doivent réimplémenter cette fonction et renvoyer la valeur du champ index, ou QVariant() si elle ne peut être déterminée.
[protected] const QSqlDriver *QSqlResult::driver() const
Renvoie le pilote associé au résultat. Il s'agit de l'objet passé au constructeur.
[virtual protected] bool QSqlResult::exec()
Exécute la requête, en renvoyant true en cas de succès ; sinon, renvoie false.
Voir aussi prepare().
[protected] QString QSqlResult::executedQuery() const
Renvoie la requête qui a été exécutée. Elle peut être différente de la requête qui a été transmise, par exemple si des valeurs liées ont été utilisées avec une requête préparée et que la base de données sous-jacente ne prend pas en charge les requêtes préparées.
Voir aussi exec() et setQuery().
[pure virtual protected] bool QSqlResult::fetch(int index)
Positionne le résultat sur une ligne arbitraire (basée sur zéro) index.
Cette fonction n'est appelée que si le résultat est dans un état actif. Les classes dérivées doivent réimplémenter cette fonction et positionner le résultat sur la ligne index, et appeler setAt() avec une valeur appropriée. La fonction retourne true pour indiquer un succès, ou false pour indiquer un échec.
Voir aussi isActive(), fetchFirst(), fetchLast(), fetchNext() et fetchPrevious().
[pure virtual protected] bool QSqlResult::fetchFirst()
Positionne le résultat sur le premier enregistrement (ligne 0) du résultat.
Cette fonction n'est appelée que si le résultat est actif. Les classes dérivées doivent réimplémenter cette fonction et positionner le résultat sur le premier enregistrement, et appeler setAt() avec une valeur appropriée. La fonction renvoie true pour indiquer un succès, ou false pour indiquer un échec.
Voir également fetch() et fetchLast().
[pure virtual protected] bool QSqlResult::fetchLast()
Positionne le résultat sur le dernier enregistrement (dernière ligne) du résultat.
Cette fonction n'est appelée que si le résultat est dans un état actif. Les classes dérivées doivent réimplémenter cette fonction et positionner le résultat sur le dernier enregistrement, et appeler setAt() avec une valeur appropriée. La fonction renvoie true pour indiquer un succès, ou false pour indiquer un échec.
Voir également fetch() et fetchFirst().
[virtual protected] bool QSqlResult::fetchNext()
Positionne le résultat sur le prochain enregistrement (ligne) disponible dans le résultat.
Cette fonction n'est appelée que si le résultat est actif. L'implémentation par défaut appelle fetch() avec l'index suivant. Les classes dérivées peuvent réimplémenter cette fonction et positionner le résultat sur l'enregistrement suivant d'une autre manière, et appeler setAt() avec une valeur appropriée. La fonction renvoie true pour indiquer un succès, ou false pour indiquer un échec.
Voir aussi fetch() et fetchPrevious().
[virtual protected] bool QSqlResult::fetchPrevious()
Positionne le résultat sur l'enregistrement (ligne) précédent dans le résultat.
Cette fonction n'est appelée que si le résultat est actif. L'implémentation par défaut appelle fetch() avec l'index précédent. Les classes dérivées peuvent réimplémenter cette fonction et positionner le résultat à l'enregistrement suivant d'une autre manière, et appeler setAt() avec une valeur appropriée. La fonction renvoie true pour indiquer un succès, ou false pour indiquer un échec.
[virtual] QVariant QSqlResult::handle() const
Renvoie l'identifiant de base de données de bas niveau pour ce jeu de résultats enveloppé dans un QVariant ou un QVariant invalide s'il n'y a pas d'identifiant.
Attention : Utilisez cette fonction avec la plus grande prudence et uniquement si vous savez ce que vous faites.
Attention : L'identifiant retourné ici peut devenir un pointeur périmé si le résultat est modifié (par exemple, si vous l'effacez).
Attention : Le handle peut être NULL si le résultat n'a pas encore été exécuté.
Attention : PostgreSQL : en mode forward-only, le handle de QSqlResult peut changer après avoir appelé fetch(), fetchFirst(), fetchLast(), fetchNext(), fetchPrevious(), nextResult().
L'identifiant retourné ici dépend de la base de données, vous devez demander le nom du type de la variante avant d'y accéder.
Cet exemple récupère l'identifiant d'un résultat 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) { // ... } }
Cet extrait renvoie l'identifiant pour PostgreSQL ou 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) { // ... } }
Voir aussi QSqlDriver::handle().
[protected] bool QSqlResult::hasOutValues() const
Renvoie true si au moins une des valeurs liées de la requête est un QSql::Out ou un QSql::InOut; sinon, renvoie false.
Voir aussi bindValueType().
[protected] bool QSqlResult::isActive() const
Renvoie true si le résultat comporte des enregistrements à extraire ; sinon, renvoie false.
[protected] bool QSqlResult::isForwardOnly() const
Renvoie true si vous ne pouvez que faire défiler l'ensemble des résultats vers l'avant ; sinon, renvoie false.
Voir aussi setForwardOnly().
[pure virtual protected] bool QSqlResult::isNull(int index)
Renvoie true si le champ situé à la position index dans la ligne actuelle est nul ; sinon, renvoie false.
[protected] bool QSqlResult::isSelect() const
Renvoie true si le résultat actuel provient d'une déclaration SELECT; sinon, renvoie false.
Voir aussi setSelect().
[protected] bool QSqlResult::isValid() const
Renvoie true si le résultat est positionné sur un enregistrement valide (c'est-à-dire que le résultat n'est pas positionné avant le premier ou après le dernier enregistrement) ; sinon, renvoie false.
Voir aussi at().
[protected] QSqlError QSqlResult::lastError() const
Renvoie la dernière erreur associée au résultat.
Voir aussi setLastError().
[virtual protected] QVariant QSqlResult::lastInsertId() const
Renvoie l'ID de l'objet de la dernière ligne insérée si la base de données le permet. Une adresse invalide QVariant sera renvoyée si la requête n'a pas inséré de valeur ou si la base de données ne renvoie pas l'identifiant. Si plus d'une ligne a été touchée par l'insertion, le comportement est indéfini.
Notez que pour les bases de données Oracle, le ROWID de la ligne sera retourné, alors que pour les bases de données MySQL, le champ auto-incrémenté de la ligne sera retourné.
Voir aussi QSqlDriver::hasFeature().
[protected] QString QSqlResult::lastQuery() const
Renvoie le texte de la requête SQL en cours, ou une chaîne vide s'il n'y en a pas.
Voir aussi setQuery().
[pure virtual protected] int QSqlResult::numRowsAffected()
Renvoie le nombre de lignes affectées par la dernière requête exécutée, ou -1 s'il n'est pas possible de le déterminer ou si la requête est une instruction SELECT.
Voir aussi size().
[virtual protected] bool QSqlResult::prepare(const QString &query)
Prépare l'exécution de la requête query; la requête utilise normalement des espaces réservés afin de pouvoir être exécutée à plusieurs reprises. Retourne vrai si la requête est préparée avec succès ; sinon, retourne false.
Voir aussi exec().
[virtual protected] QSqlRecord QSqlResult::record() const
Renvoie l'enregistrement actuel si la requête est active ; sinon, il renvoie une page vide QSqlRecord.
L'implémentation par défaut renvoie toujours un fichier vide QSqlRecord.
Voir aussi isActive().
[pure virtual protected] bool QSqlResult::reset(const QString &query)
Définit le résultat pour utiliser l'instruction SQL query pour la récupération ultérieure des données.
Les classes dérivées doivent réimplémenter cette fonction et appliquer l'adresse query à la base de données. Cette fonction n'est appelée qu'après que le résultat a été placé dans un état inactif et est positionnée avant le premier enregistrement du nouveau résultat. Les classes dérivées doivent renvoyer true si la requête a abouti et est prête à être utilisée, ou false dans le cas contraire.
Voir également setQuery().
[protected] void QSqlResult::resetBindCount()
Réinitialise le nombre de paramètres de liaison.
[virtual protected] bool QSqlResult::savePrepare(const QString &query)
Prépare la requête query, en utilisant la fonctionnalité de la base de données sous-jacente dans la mesure du possible. Retourne true si la requête est préparée avec succès ; sinon, retourne false.
Note : Cette méthode aurait dû s'appeler "safePrepare()".
Voir également prepare().
[virtual protected] void QSqlResult::setActive(bool active)
Cette fonction est fournie aux classes dérivées pour définir l'état actif interne sur active.
Voir également isActive().
[virtual protected] void QSqlResult::setAt(int index)
Cette fonction est fournie aux classes dérivées pour définir la position de ligne interne (basée sur zéro) à index.
Voir également at().
[virtual protected] void QSqlResult::setForwardOnly(bool forward)
Définit le mode "forward only" à forward. Si forward est vrai, seul fetchNext() est autorisé pour naviguer dans les résultats. Le mode "forward only" nécessite beaucoup moins de mémoire puisque les résultats ne doivent pas être mis en cache. Par défaut, cette fonctionnalité est désactivée.
Le fait de définir la valeur "forward only" à false est une suggestion au moteur de base de données, qui a le dernier mot sur la question de savoir si un ensemble de résultats est uniquement en mode "forward only" ou s'il est possible de le faire défiler. isForwardOnly() renverra toujours l'état correct de l'ensemble de résultats.
Remarque : L'appel à setForwardOnly après l'exécution de la requête entraînera au mieux des résultats inattendus, au pire des plantages.
Note : Pour s'assurer que la requête forward-only s'est terminée avec succès, l'application doit vérifier lastError() pour une erreur non seulement après l'exécution de la requête, mais aussi après avoir navigué dans les résultats de la requête.
Attention : PostgreSQL : Lors de la navigation dans les résultats de la requête en mode forward-only, n'exécutez aucune autre commande SQL sur la même connexion à la base de données. Cela entraînerait la perte des résultats de la requête.
Voir aussi isForwardOnly(), fetchNext(), et QSqlQuery::setForwardOnly().
[virtual protected] void QSqlResult::setLastError(const QSqlError &error)
Cette fonction est fournie aux classes dérivées pour définir la dernière erreur à error.
Voir également lastError().
[virtual protected] void QSqlResult::setQuery(const QString &query)
Définit la requête actuelle pour le résultat à query. Vous devez appeler reset() pour exécuter la requête dans la base de données.
Voir également reset() et lastQuery().
[virtual protected] void QSqlResult::setSelect(bool select)
Cette fonction est fournie aux classes dérivées pour indiquer si l'instruction en cours est une instruction SQL SELECT. Le paramètre select doit être vrai si l'instruction est une instruction SELECT; sinon, il doit être faux.
Voir également isSelect().
[pure virtual protected] int QSqlResult::size()
Renvoie la taille du résultat SELECT, ou -1 si elle ne peut être déterminée ou si la requête n'est pas une déclaration SELECT.
Voir aussi 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.