IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Dur dur l'API ODBC


Sujet :

C++

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut 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
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    As-tu consulté le tutoriel de Melem sur ODBC ? Peut-être y trouveras-tu des pistes intéressantes.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    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
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

Discussions similaires

  1. Timer ou sleep? Dur dur de choisir.
    Par Gaadek dans le forum Delphi
    Réponses: 8
    Dernier message: 30/10/2006, 09h47
  2. [MySQL] Requête imbriquée dur dur
    Par nebil dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 08/07/2006, 12h26
  3. Pthread et stdio dur dur
    Par greg13 dans le forum Linux
    Réponses: 3
    Dernier message: 21/03/2006, 22h56
  4. Dur dur Mandriva et Nvidia
    Par Cazaux-Moutou-Philippe dans le forum Mandriva / Mageia
    Réponses: 5
    Dernier message: 19/03/2006, 03h07
  5. [hard core] requête dur dur
    Par heid dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/02/2006, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo