-
Dur dur l'API ODBC
Bonjour à tous,
J'utilise depuis peu l'API ODBC, et j'éprouve quelques difficultés à la maîtriser.
Pour le moment je test avec SQL Server et les drivers "SQL Server" et "SQL Native Client".
Voici les deux problèmes majeurs rencontrés jusqu'ici :
1) J'utilise SQLDescribeCol pour obtenir des infos sur les colonnes retournées par une requête. Le type "SQL_VARCHAR", de constante 12, est invalide pour la fonction SQLBindCol (ça me renvoie "Invalid application buffer type", code HY003), et donc il faut que je force en "SQL_C_CHAR") et là ça passe mais combien de "redressements" de ce style aurai-je besoin ?
2) Mon premier champ que je test est de type int. Dans SQL Managment de Microsoft, le champ "taille" de ma colonne vaut "4", mais SQLDescribeCol m'indique 10, ce qui, dans le cas d'un fetch de 2 lignes, me fait faire une allocation de 20 octets au lieu de 8, mais, plus gros problème, je passe donc 10 à SQLBindCol en tant que taille de donnée de ce champ et celui-ci me rempli mon buffer avec la bonne taille par valeur, 4. Donc je n'ai plus aucune info pour retrouver la valeur de la Xème ligne renvoyée.
En gros, j'ai 20 octets, je pense que la première valeur sera à la position 0, la seconde à la position 10, mais en fait il m'a mis la première valeur à la position 0, et la seconde à la position 4.
Donc ce 10, il veut dire quoi en fait ? Comment retrouver ce 4 ?
Merci,
A bientôt
-
Salut,
As-tu consulté le tutoriel de Melem sur ODBC ? Peut-être y trouveras-tu des pistes intéressantes.
-
Oui je l'ai lu, il est super intéressant ce tuto. Il manque juste peut-être les fetch de plusieurs lignes à la fois au lieu de 1 par 1 (par défaut) mais sinon il m'a pas mal aidé.
Mais ça n'explique pas les cas tordus où comment les prévenir et les gérer en conséquence.
Merci,
A bientôt