QSqlResult Class
La classe QSqlResult fournit une interface abstraite permettant d'accéder aux données de certaines bases de données SQL. En savoir plus...
| 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 base 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
En règle générale, il est préférable d’utiliser ` QSqlQuery ` plutôt que `QSqlResult`, car ` QSqlQuery ` fournit un wrapper générique pour les implémentations spécifiques à chaque base de données de `QSqlResult`.
Si vous implémentez votre propre pilote SQL (en créant une sous-classe de ` 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 définit les différentes syntaxes permettant de spécifier des espaces réservés dans les requêtes préparées.
| Constante | Valeur | Description |
|---|---|---|
QSqlResult::PositionalBinding | 0 | Utilise la syntaxe positionnelle de type ODBC, avec « ? » comme espace réservé. |
QSqlResult::NamedBinding | 1 | Utilise la syntaxe de type Oracle avec des espaces réservés nommés (par exemple, « :id ») |
Voir également bindingSyntax().
Documentation sur les fonctions membres
[explicit protected] QSqlResult::QSqlResult(const QSqlDriver *db)
Crée un objet QSqlResult à l'aide du pilote de base de données db. L'objet est initialisé à l'état inactif.
Voir également isActive() et driver().
[virtual noexcept] QSqlResult::~QSqlResult()
Détruit l'objet et libère toutes les ressources allouées.
[protected] void QSqlResult::addBindValue(const QVariant &val, QSql::ParamType paramType)
Associe la valeur val, de type paramType, à la prochaine position disponible dans l'enregistrement (ligne) actuel.
Voir également bindValue().
[protected] int QSqlResult::at() const
Renvoie la position actuelle (à partir de zéro) de la ligne dans le résultat. Peut renvoyer les valeurs spéciales QSql::BeforeFirstRow ou QSql::AfterLastRow.
Voir également setAt() et isValid().
[virtual protected] void QSqlResult::bindValue(int index, const QVariant &val, QSql::ParamType paramType)
Associe la valeur val, de type paramType, à la position index dans l'enregistrement (ligne) actuel.
Voir également addBindValue().
[virtual protected] void QSqlResult::bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)
Associe la valeur val, de type paramType, au nom placeholder dans l'enregistrement (ligne) actuel.
Remarque : l'affectation d'un espace réservé non défini entraînera un comportement indéfini.
Il s'agit d'une fonction surchargée.
Voir également QSqlQuery::bindValue().
[protected] QSql::ParamType QSqlResult::bindValueType(int index) const
Renvoie le type du paramètre correspondant à la valeur associée à la position index.
Voir également boundValue().
[protected] QSql::ParamType QSqlResult::bindValueType(const QString &placeholder) const
Renvoie le type du paramètre associé à la valeur liée au nom d'placeholder ion indiqué.
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 associée à la position index dans l'enregistrement (ligne) actuel.
Voir également bindValue() et boundValues().
[protected] QVariant QSqlResult::boundValue(const QString &placeholder) const
Renvoie la valeur associée au nom d'placeholder ion indiqué dans l'enregistrement (ligne) actuel.
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) actuel.
Voir également boundValue() et boundValueNames().
[protected] QStringList QSqlResult::boundValueNames() const
Renvoie les noms de toutes les valeurs liées.
Voir également boundValue() et boundValueName().
[protected] QVariantList QSqlResult::boundValues() const
Renvoie une liste des valeurs associées au résultat pour l'enregistrement (ligne) actuel.
Voir également boundValueCount().
[protected] QVariantList &QSqlResult::boundValues()
Renvoie une référence modifiable à la liste des valeurs associées du résultat pour l'enregistrement (ligne) actuel.
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 objet de type QVariant. Cette fonction n’est appelée que si le résultat est actif, s’il est positionné sur un enregistrement valide et si index est un nombre non négatif. Les classes dérivées doivent réimplémenter cette fonction et renvoyer la valeur du champ index, ou QVariant() si celle-ci 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 qui a été transmis au constructeur.
[virtual protected] bool QSqlResult::exec()
Exécute la requête et renvoie « true » en cas de réussite ; sinon, renvoie « false ».
Voir également prepare().
[protected] QString QSqlResult::executedQuery() const
Renvoie la requête qui a été effectivement exécutée. Celle-ci peut différer de la requête 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 également exec() et setQuery().
[pure virtual protected] bool QSqlResult::fetch(int index)
Place le résultat à une ligne arbitraire (comptée à partir de 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 à l’ index de la ligne, puis appeler setAt() avec une valeur appropriée. Renvoie « true » en cas de réussite, ou « false » en cas d’échec.
Voir également isActive(), fetchFirst(), fetchLast(), fetchNext() et fetchPrevious().
[pure virtual protected] bool QSqlResult::fetchFirst()
Place le résultat sur le premier enregistrement (ligne 0) 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, positionner le résultat sur le premier enregistrement et appeler setAt() avec une valeur appropriée. Renvoie true pour indiquer que l'opération a réussi, ou false pour signaler un échec.
Voir également ` fetch()` et ` fetchLast()`.
[pure virtual protected] bool QSqlResult::fetchLast()
Place 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, positionner le résultat sur le dernier enregistrement et appeler setAt() avec une valeur appropriée. Renvoie true pour indiquer que l'opération a réussi, ou false pour indiquer qu'elle a échoué.
Voir également ` fetch()` et ` fetchFirst()`.
[virtual protected] bool QSqlResult::fetchNext()
Place le résultat sur l'enregistrement (ligne) suivant disponible dans le résultat.
Cette fonction n'est appelée que si le résultat est dans un état 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, puis appeler setAt() avec une valeur appropriée. Renvoie true pour indiquer que l'opération a réussi, ou false pour signifier un échec.
Voir également 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 dans un état 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 sur l'enregistrement suivant d'une autre manière, puis appeler ` setAt()` avec une valeur appropriée. Renvoie `true` pour indiquer que l'opération a réussi, ou `false` pour signifier un échec.
[virtual] QVariant QSqlResult::handle() const
Renvoie le descripteur de base de données de bas niveau correspondant à cet ensemble de résultats, encapsulé dans un objet ` QVariant ` ou, en l'absence de descripteur, dans un objet ` QVariant ` invalide.
Avertissement : utilisez cette fonction avec la plus grande prudence et uniquement si vous savez exactement ce que vous faites.
Avertissement : le descripteur renvoyé ici peut devenir un pointeur obsolète si le résultat est modifié (par exemple, si vous l'effacez).
Avertissement : le descripteur peut être NULL si le résultat n’a pas encore été exécuté.
Avertissement : PostgreSQL : en mode « forward-only », le descripteur de QSqlResult peut changer après l’appel de fetch(), fetchFirst(), fetchLast(), fetchNext(), fetchPrevious() ou nextResult().
Le descripteur renvoyé ici dépend de la base de données ; vous devez interroger le nom du type de la variante avant d’y accéder.
Cet exemple récupère le descripteur 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 de code renvoie le descripteur 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 également QSqlDriver::handle().
[protected] bool QSqlResult::hasOutValues() const
Renvoie « true » si au moins une des valeurs liées à la requête est de type « QSql::Out » ou « QSql::InOut » ; sinon, renvoie « false ».
Voir également bindValueType().
[protected] bool QSqlResult::isActive() const
Renvoie « true » si le résultat contient des enregistrements à récupérer ; sinon, renvoie « false ».
[protected] bool QSqlResult::isForwardOnly() const
Renvoie « true » si le défilement ne peut se faire que vers l'avant dans le jeu de résultats ; sinon, renvoie « false ».
Voir également setForwardOnly().
[pure virtual protected] bool QSqlResult::isNull(int index)
Renvoie « true » si le champ situé à la position index dans la ligne courante est nul ; sinon, renvoie « false ».
[protected] bool QSqlResult::isSelect() const
Renvoie ` true ` si le résultat actuel provient d'une instruction ` SELECT ` ; sinon, renvoie ` false`.
Voir également setSelect().
[protected] bool QSqlResult::isValid() const
Renvoie « true » si le résultat se trouve sur un enregistrement valide (c'est-à-dire s'il ne se trouve ni avant le premier enregistrement, ni après le dernier) ; sinon, renvoie « false ».
Voir également 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 correspondant à la dernière ligne insérée, si la base de données le prend en charge. Une erreur « QVariant » sera renvoyée si la requête n'a inséré aucune valeur ou si la base de données ne renvoie pas l'ID. Si plusieurs lignes ont été concernées par l'insertion, le comportement n'est pas défini.
Notez que pour les bases de données Oracle, c’est le ROWID de la ligne qui sera renvoyé, tandis que pour les bases de données MySQL, c’est le champ à incrémentation automatique de la ligne qui sera renvoyé.
Voir également 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 concernées par la dernière requête exécutée, ou -1 s'il est impossible 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'query fournie en vue de son exécution ; la requête utilise généralement des variables de remplacement afin de pouvoir être exécutée à plusieurs reprises. Renvoie « true » si la requête a été préparée avec succès ; sinon, renvoie « false ».
Voir également exec().
[virtual protected] QSqlRecord QSqlResult::record() const
Renvoie l'enregistrement actuel si la requête est active ; sinon, renvoie une table vide ` QSqlRecord`.
L'implémentation par défaut renvoie toujours un ` QSqlRecord` vide.
Voir aussi isActive().
[pure virtual protected] bool QSqlResult::reset(const QString &query)
Définit le résultat de manière à utiliser l'query de l'instruction SQL pour les récupérations de données suivantes.
Les classes dérivées doivent réimplémenter cette fonction et appliquer l'query à la base de données. Cette fonction n'est appelée qu'après que le résultat a été mis à l'état inactif et qu'il est positionné avant le premier enregistrement du nouveau résultat. Les classes dérivées doivent renvoyer true si la requête a abouti et que le résultat est prêt à être utilisé, 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 l'query fournie, en utilisant les fonctionnalités de la base de données sous-jacente dans la mesure du possible. Renvoie true si la requête a été préparée avec succès ; sinon, renvoie false.
Remarque : 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 interne (à partir de zéro) de la ligne sur index.
Voir également at().
[virtual protected] void QSqlResult::setForwardOnly(bool forward)
Définit le mode « forward only » sur « forward ». Si « forward » est vrai, seule la fonction « fetchNext() » est autorisée pour parcourir les résultats. Le mode « forward only » nécessite beaucoup moins de mémoire, car les résultats n’ont pas besoin d’être mis en cache. Par défaut, cette fonctionnalité est désactivée.
Définir « forward only » sur « false » constitue une suggestion à l’intention du moteur de base de données, qui a le dernier mot quant à savoir si un jeu de résultats est en mode « forward only » ou défilable. La fonction isForwardOnly() renverra toujours l’état correct du jeu de résultats.
Remarque : l’appel de `setForwardOnly` après l’exécution de la requête entraînera, au mieux, des résultats inattendus et, au pire, des plantages.
Remarque : pour s’assurer que la requête en mode « forward-only » s’est terminée avec succès, l’application doit vérifier si la fonction lastError() renvoie une erreur, non seulement après l’exécution de la requête, mais également après avoir parcouru les résultats de la requête.
Avertissement : 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 également 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 sur error.
Voir également lastError().
[virtual protected] void QSqlResult::setQuery(const QString &query)
Définit la requête actuelle pour le résultat sur query. Vous devez appeler la fonction reset() pour exécuter la requête sur 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 courante est ou non une instruction SQL de type « SELECT ». Le paramètre « select » doit être défini sur « true » si l'instruction est une instruction de type « SELECT » ; dans le cas contraire, il doit être défini sur « false ».
Voir également isSelect().
[pure virtual protected] int QSqlResult::size()
Renvoie la taille du résultat de la fonction ` SELECT `, ou -1 si celle-ci ne peut être déterminée ou si la requête n'est pas une instruction ` SELECT `.
Voir également 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.