Ce tutoriel vous montre comment utiliser le module SQL de Qt, une utilisation simple de QSqlDatabase QSqlQuery.
Cela va vous permettre de gérer une base de donnée depuis votre logiciel.
Avant de vous lancer dans le code, vérifiez que la lib correspondant à votre serveur SQL est disponible, pour cela il vous suffit d'aller dans le dossier de Qt puis "qt/plugins/sqldrivers" et de vérifier qu'il y ai bien la lib correspondant à votre serveur
Si la lib est manquante, recompilez Qt avec les bonnes options
Voilà pour ce qui est de la première partie de ce tuto :)
Rentrons maintenant dans la partie plus intéressante.
Pour ce tuto j'ai choisi d'utiliser une base de donnée SQLITE (pas de host, login, pass à rajouter dans ma GUI ^^)
- Créer un nouveau projet Qt graphique.
- Créer votre GUI (dans mon cas je n'ai qu'un label, une lineedit pour le nom de la base de donnée, un champ texte pour écrire ma requête, un bouton pour envoyer cette requête et un tableau qui va me permettre d'afficher mes résultats).
- Maintenant il faut ajouter la pièce maîtresse qui va vous permettre de vous connecter à votre base de donnée:
- Après avoir ajouté ces attributs à votre classe il va vous falloir un slot pour le bouton et une ou 2 méthodes histoire de ne pas tous mettre dans la même (j'en ai choisi 2):
- Vous voilà avec votre .h, il ne reste plus qu'à remplir ces methodes dans votre .cpp.
Le constructeur :
La GUI est en place :)
- La méthode initDB, appelé dans le slot du bouton, va tester la base de donnée (sqlite3 n'utilise qu'un simple fichier pour ses bases de données, si le fichier de la base de donnée n'existe pas il va être créé automatiquement) et créer une table qtsql et y rajouter des entrées: Il y a plusieurs manières d'ajouter des entrées dans une base de donnée:
- "Binder" chaque valeurs de sa requête et exécuter les requêtes une par une: - Ou alors mettre chaque colonne dans la liste, "binder" celle-ci et faire un execBatch() qui va s'occuper de tous faire.
Il ne vous reste plus qu'à exécuter la requête du QTextEdit :
Et d'afficher son résultat dans le tableau:
Voici le resultat:
N'hesitez pas à poser des questions :)
Cela va vous permettre de gérer une base de donnée depuis votre logiciel.
Avant de vous lancer dans le code, vérifiez que la lib correspondant à votre serveur SQL est disponible, pour cela il vous suffit d'aller dans le dossier de Qt puis "qt/plugins/sqldrivers" et de vérifier qu'il y ai bien la lib correspondant à votre serveur
qsqlite4.dll -> SQLITE
qsqlmysql4.dll -> MYSQL
...
Si la lib est manquante, recompilez Qt avec les bonnes options
Options de configure.exe pour MYSQL:
-qt-sql-mysql -l mysql -I C:\MySQL\MySQL51\include -L C:\MySQL\MySQL51\lib\opt
Ce lien peut vous être utile qt 4.7 sql-driver
Voilà pour ce qui est de la première partie de ce tuto :)
Rentrons maintenant dans la partie plus intéressante.
Pour ce tuto j'ai choisi d'utiliser une base de donnée SQLITE (pas de host, login, pass à rajouter dans ma GUI ^^)
- Créer un nouveau projet Qt graphique.
- Créer votre GUI (dans mon cas je n'ai qu'un label, une lineedit pour le nom de la base de donnée, un champ texte pour écrire ma requête, un bouton pour envoyer cette requête et un tableau qui va me permettre d'afficher mes résultats).
- Maintenant il faut ajouter la pièce maîtresse qui va vous permettre de vous connecter à votre base de donnée:
- Après avoir ajouté ces attributs à votre classe il va vous falloir un slot pour le bouton et une ou 2 méthodes histoire de ne pas tous mettre dans la même (j'en ai choisi 2):
- Vous voilà avec votre .h, il ne reste plus qu'à remplir ces methodes dans votre .cpp.
Le constructeur :
La GUI est en place :)
- La méthode initDB, appelé dans le slot du bouton, va tester la base de donnée (sqlite3 n'utilise qu'un simple fichier pour ses bases de données, si le fichier de la base de donnée n'existe pas il va être créé automatiquement) et créer une table qtsql et y rajouter des entrées: Il y a plusieurs manières d'ajouter des entrées dans une base de donnée:
- "Binder" chaque valeurs de sa requête et exécuter les requêtes une par une: - Ou alors mettre chaque colonne dans la liste, "binder" celle-ci et faire un execBatch() qui va s'occuper de tous faire.
Il ne vous reste plus qu'à exécuter la requête du QTextEdit :
Et d'afficher son résultat dans le tableau:
Voici le resultat:
N'hesitez pas à poser des questions :)

C‘est calme par ici! Soyez le premier à laisser une réponse?