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
Partager