none
Problème du connexion à BD Mysql dans un programme C RRS feed

  • Question

  • Salut,

    - J'ai décidé de travailler avec easyphp puisque plus facile à créer des bases des données par rapport au Mysql server via lignes des commandes. Je ne sais pas c'est ceci est bon ou non ?

    - Je ne sais pas pourquoi  je trouve seulement le dossier bin sous : C:\Program Files\EasyPHP1-7\mysql

    Je voudrais connecter à une base de données Mysql via ODBC à partir d'un programme C sous Visual Studio 2008 Windows.
    J'ai Mysql version 4.0.15 (esayphp 1.7)
    et mysql-connector-odbc-3.51.19-win32

    je trouve seulement le dossier bin sous :C:\Program Files\EasyPHP1-7\mysql
    J'ai copié ma base des données sous: C:\Program Files\EasyPHP1-7\mysql\data

    j'ai testé la source de données (ODBC) qui j'ai ajouté  avec la base de données. Ceci se passe bien.

    le nom de DSN est : toto
    le serveur: localhost
    le nom d'utilisateur : root
    le mot de passe est vide


    Mysql est bien démarré. J'ai testé la connexion entre le driver ODBC et ma base des données  alors ceci se passe bien.

    J'ai testé le code suivant pour vérifier la connexion au base des données. Le serveur est déjà démarré. La compilation se passe bien.
     Après l'exécution, j'ai l'affichage suivant:

    retcode= -1
    Erreur sur l'instruction SQLConnect


    le code est :
    #include <windows.h>
    #include <stdio.h>
    #include <conio.h>
    #include<stdlib.h>
    #include<string.h>
    
    #include <sql.h>
    #include <sqlext.h>
    #include <sqltypes.h>
    
    #include <sqlucode.h>
    #include <odbcinst.h>
    #include <Msdasql.h>
    #include <Msdadc.h>
    
    
    void main()
    {
    SQLRETURN retcode;
    //char design[20];
    //int A,B,C,D;
    //char request[100];
    //char dsn[20]="toto";
    //char uid[20]="root";
    //char pwd[20]="";
    SQLINTEGER lon,la,lb,lc,ld,taille=SQL_NTS;
    SQLCHAR design[20];
    SQLHDBC hdbc;
    SQLHENV henv;
    SQLHSTMT hstmt;
    
    
    /*Allocate environment handle */
    retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
    
    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) //{
       /* Set the ODBC version environment attribute */
       retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
    
       if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) //{
          /* Allocate connection handle */
          retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
    
         // if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
    
        //printf("%s","vrai");
        //else
            //printf("erreur\n");
    //   }
     
    //}
    
                
              // retcode = SQLConnect(hdbc,(SQLCHAR*)dsn, SQL_NTS,(SQLCHAR*)uid, SQL_NTS,(SQLCHAR*)pwd, SQL_NTS);
        retcode=SQLConnect(hdbc,(SQLCHAR *)"toto",SQL_NTS,(SQLCHAR *)"root",SQL_NTS,(SQLCHAR *)"",SQL_NTS);
        printf("%d",retcode);
        if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
    printf("\n%s","vrai");
    else
    printf("Erreur sur l'instruction SQLConnect !\\n");
    
    }
    

    Je dois travailler dans cet environnement: Windows, Visual Studio, C, Mysql et ODBC.

    Je serais très content pour vos aides

    Merci.

    mardi 14 juillet 2009 10:27