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 :

pb connexion odbc


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Par défaut pb connexion odbc
    Voila je me suis mis il y a très peux de temps a odbc , mais je n'arrive pas a établir une connection , je suis obligée d'utiliser une base acess .


    voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #include <Windows.h>
    #include <stdio.h>
    #include <sql.h>
    #include <sqlext.h>
     
    /*
     * connection a la base de donnée
     */
    main() {
      SQLHENV env;
      SQLHDBC dbc;
      SQLHSTMT stmt;
      SQLRETURN ret; 
      SQLCHAR outstr[1024];
      SQLUSMALLINT direction;
     
      /* Allocate an environment handle */
      SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
      SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
      SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
      /* Connect to the DSN bdd */
      ret = SQLDriverConnect(dbc, NULL, "DSN=bdd;", SQL_NTS,
    			 NULL, 0, NULL,
    			 SQL_DRIVER_COMPLETE);
      if (SQL_SUCCEEDED(ret)) {
        printf("Connected\n");
    	SQLDisconnect(dbc);		/* disconnect from driver */
      } 
      else fprintf(stderr, "Failed to connect\n");
     
      /* free up allocated handles */
      SQLFreeHandle(SQL_HANDLE_DBC, dbc);
      SQLFreeHandle(SQL_HANDLE_ENV, env);
    }

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    En attendant l'avis d'un professionnel tu peux regarder ce tuto:
    http://www.easysoft.com/developer/la..._tutorial.html

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Par défaut
    j'ai regarder quelque site sur le sujet mais je ne cerne pas encore totalement l’utilisation exacte et propre, j’espère qu'un pro passera par la .

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Affiche l'origine de l'erreur à l'aide de la fonction sql_perror que tu trouveras ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void sql_perror(SQLSMALLINT HandleType, SQLHANDLE Handle, const char * title)
    {
        SQLCHAR s[SQL_MAX_MESSAGE_LENGTH];
        SQLSMALLINT ligne = 1;
     
        fprintf(stderr, "%s :\n", title);
     
        while (SQLGetDiagField(HandleType, Handle, ligne, SQL_DIAG_MESSAGE_TEXT, s, sizeof(s), NULL) != SQL_NO_DATA)
        {
            fprintf(stderr, "%d. %s\n", ligne, s);
            ligne++;
        }
    }
    Tu l'appelleras de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql_perror(SQL_HANDLE_DBC, dbc, "Failed to connect");
    Qu'est-ce que ça donne ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Par défaut
    j'ai suivie ton conseil mais j'obtien juste :
    Failed to connect :
    1: [
    2: [
    c'est pas très explicite :s

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    C'est encore un problème de jeu de caractères. Tu utilises sans doute Visual Studio 2005 ou une version plus récente. Va donc dans dans Project > Properties > Configuration Properties > General puis positionne la valeur de Character Set à Not Set. Pourtant il me semble que je n'avais pas ce problème. Je n'ai pas le temps d'examiner de près le problème là mais je le ferai ce soir. A+.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Par défaut
    Bon j'ai changé pour not set , maintenant sa se connecte mais tu peux m'expliquer pourquoi sa ne marché pas ? une histoire de codage de donnée ?

  8. #8
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Par défaut, depuis Visual Studio 2005, c'est la version Unicode des fonctions de Windows qui sont déclarées. Ces fonctions là manipulent des chaînes de caractères Unicode (2 octets par caractère) et non ANSI (un octet par caractère). C'est le réglage que je t'ai indiqué qui permet de contrôler quelles fonctions désires-tu utiliser. Si tu utilises les fonctions Unicode alors que tu les passes ensuite des chaînes ANSI ("DSN=bdd;" par exemple), ça ne va évidemment pas marcher. Aux fonctions Unicode, il faut passer des chaînes Unicode (L"DSN=bdd;" par exemple). Les articles suivant t'aideront à approfondir ce sujet :

    Les caractères larges en C
    Unicode dans l'API Windows

    Je vais ajouter ces précisions dans mon tutoriel. Merci.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Par défaut
    Merci pour l'aide et pour les info je vais jeter un oeil dessus .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion ODBC à des bases Progress
    Par Blue LC dans le forum XMLRAD
    Réponses: 9
    Dernier message: 01/04/2006, 17h21
  2. SQL Server connexion ODBC
    Par klael dans le forum Bases de données
    Réponses: 7
    Dernier message: 09/03/2004, 11h18
  3. [Foxpro]Connexion ODBC par programme
    Par Richard MORRISSEY dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 07/07/2003, 22h55
  4. connexion ODBC FileMaker pro 5 à ArcView 8.2
    Par Alex Blond dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/06/2003, 18h08
  5. Connexion ODBC
    Par Anonymous dans le forum Réseau
    Réponses: 2
    Dernier message: 23/04/2002, 13h10

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