Chacune des trois fonctions a une utilisation spécifique, qui peut être devinée à partir de leur type de retour.
exécuter
Cette fonction est la plus générique. Il renvoie une valeur booléenne, dont la valeur est true si la requête renvoie plusieurs résultats, ou false si la requête ne renvoie rien ou un nombre de mises à jour.
C'est la fonction que vous voudrez utiliser si vous ne voulez en utiliser qu'une pour être aussi générique que possible.
S'il renvoie true, vous voudrez utiliser ResultSet * getResultSet()
pour obtenir les résultats.
S'il renvoie false, vous devrez utiliser uint64_t getUpdateCount()
pour obtenir le nombre de lignes mises à jour.
exécuter la requête
Cette fonction retourne directement un ResultSet
ce qui est utile pour SELECT
et suppose qu'il existe effectivement un jeu de résultats à renvoyer.
C'est équivalent à appeler execute()
suivi de getResultSet()
.
Vous voudrez utiliser cette fonction lorsque vous savez que vous utilisez du code SQL qui renvoie des résultats tels que des lignes.
exécuter la mise à jour
Cette fonction renvoie une valeur entière qui est utile pour UPDATE
instructions et suppose qu'il y a un nombre de mises à jour à renvoyer.
C'est équivalent à appeler execute()
suivi de getUpdateCount()
, même si, pour une raison quelconque, les types de retour sont différents (int vs uint64_t).
C'est la fonction à utiliser lors de l'exécution d'instructions SQL qui modifient des données et vous devez savoir si certaines données ont été modifiées.
Alors,
celui unifié est en fait execute
, qui peut être utilisé pour exécuter du SQL arbitraire et gérer le résultat de manière appropriée, tandis que les deux autres sont des wrappers pratiques lorsque vous savez quel type de requête vous exécutez.
Dans votre cas, puisque vous écrivez un wrapper autour du langage SQL, chacune de vos fonctions sait quel type d'instruction elle exécutera, donc l'utilisation des fonctions pratiques vous permettra d'écrire du code plus court.
Par exemple :
insert(), update(), delete() ---> executeUpdate()
select() ---> executeQuery()