Bonjour,
j'ai fait une DLL en c++ qui attaque n'importe quelle base de donnée avec ODBC. J'utilise les fonctions SQLConnectDriver, SQLExecDirect de la librairie sql.h. Chacune de ces fonctions renvoient un code SQLRETURN, lorsque celui ci est égal à SQL_ERROR, on peut aller chercher l'erreur avec la fonction SQLGetDiagRec. Maintenant que la présentation est faite, j'aimerais savoir qui en théorie renvoie cette erreur ?? Parce que je me suis rendu compte que si par exemple je fais une erreur dans ma chaine de connexion, à savoir :
"DIVER={MySQL ODBC 3.51 Driver};server=192.168.99.2;Option=16834;Database=rh;UID=test;PASSWORD=1234;"
en ecrivant DIVER au lieu de DRIVER, il y a une erreur qui m'est retournée par le gestionnaire de pilote ODBC :
[Microsoft][Gestionnaire de pilotes ODBC] Échec du dialogue
erreur qui est trés loin d'etre explicite, mais qui peux paraitre logique étant donné qu'il a planté sur le premier mot donc ne sait meme pas quel driver je veux utiliser.
Maintenant si je fais mon erreur apres le driver, à savoir par exemple :
"DIVER={MySQL ODBC 3.51 Driver};srver=192.168.99.2;Option=16834;Database=rh;UID=test;PASSWORD=1234;"
SRVER au lieu de SERVEUR, j'obtiens une erreur de la part du driver MySQL
[MySQL][ODBC 3.51 Driver]Invalid window handle for connection completion argument.
Pour l'instant tout semble logique. Mais ce que je ne comprends pas c'est quand je fais une erreur sur une requete SQL, par exemple en demandant l'execution de :
"Slect * from table"
j'obtiens toujours, quelle que soit mon erreur, l'erreur suivante :
[Microsoft][Gestionnaire de pilotes ODBC] Erreur de séquence de la fonction
Ce qui est loin d'etre une erreur explicite. De plus je suis sur d'avoir deja eu une erreur explicite en retour d'une erreur SQL. De plus cette erreur me semble renvoyée par le gestionnaire ODBC et non par le driver MYSql, ce que je ne trouve pas logique
Donc voici mes questions, suis je fou ? ou en effet ce n'est pas normal ? Ensuite j'aimerais savoir si quelqu'un aurait une idée de pourquoi j'obtiens une erreur du gestionnaire de pilotes ODBC plutot que du driver MySQL.
Merci d'avance.
P.S : si j'execute une requete sans erreur j'obtiens bien le bon résultat.
Partager