« Programmation Qt/Sauvegarder des données avec SQL » : différence entre les versions

Contenu supprimé Contenu ajouté
Athozus (discussion | contributions)
Création de la page → + connexion à la base de données, sommaire Qt
 
Athozus (discussion | contributions)
→‎Exécuter une requête : création de la section → + exemples, principe
Ligne 22 :
}
</syntaxhighlight>
 
== Exécuter une requête ==
Pour exécuter une requête SQL, nous allons utiliser la classe <code>QSqlQuery</code>. Elle s'utilise de cette manière, et affecte la dernière base de données ouverte (avec la méthode <code>open</code>) :<syntaxhighlight lang="c++" line="1" start="1">
QSqlQuery query;
query.exec("SELECT * FROM wikilivres ORDER BY page");
</syntaxhighlight>Pour récupérer les données, vous faites ensuite :<syntaxhighlight lang="c++" line="1" start="1">
while (query.next()) {
QString pageName = query.value(0).toString();
int page = query.value(1).toInt();
}
</syntaxhighlight>Si les valeurs avec lesquelles vous voulez trier les données changent dans votre programme, vous pouvez utiliser les méthodes <code>prepare()</code>, <code>addBindValue()</code> et <code>bindValue()</code>.<syntaxhighlight lang="c++" line="1" start="1">
query.prepare("SELECT * FROM wikilivres WHERE id < :max & id > :min");
query.bindValue(":max", 100);
query.bindValue(":min", 0);
query.exec();
</syntaxhighlight>Ou encore :<syntaxhighlight lang="c++" line="1" start="1">
query.prepare("SELECT * FROM wikilivres WHERE id < ? & id > ?");
query.addBindValue(100);
query.addBindValue(0);
query.exec();
</syntaxhighlight>Quand il y a une ou deux valeurs, on peut utiliser les points d'interrogation, mais quand c'est plus, on peut attribuer des noms aux valeurs de la requête.