Re: Connecter au Mysql =?unknown-8bit?Q?vi?= =?unknown-8bit?Q?a_ODBC_=E0_parti?= =?unknown-8bit?Q?r?= d'un programme C sous Visual Studio 2008 Windows

Jess Balint <[email protected]> Thu, 09 Jul 2009 18:30:30 -0400
Newsgroups gmane.comp.db.mysql.odbc
Message-ID <[email protected]>
Hi, I don't speak French. If you have a problem with SQLConnect(),
try calling SQLGetDiagField()/SQLGetDiagRec() to obtain the reason it
failed.

If you can briefly describe your problem in English, I can offer more
assistance.

Best,
Jess

-- 
Jess Balint
Sun Microsystems, Inc
Office: +1 218 206 2477

On Thu, Jul 09, 2009 at 10:41:56PM +0100, Rim msedi wrote:
> Salut,
> 
> 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
> 
> 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 nom d'utilisateur : root
> le mot de passe est vide
> 
> 
> Voici une partie de mon programme C:
> 
> 
> #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);
>     if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
> printf("%s","vrai");
> else
> printf("Erreur sur l'instruction SQLConnect !\\n");
> 
> 
> SQLAllocStmt ( hdbc, &hstmt);
> SQLBindCol(hstmt,1,SQL_C_CHAR,design,sizeof(design),&lon);
> SQLBindCol(hstmt,2,SQL_C_ULONG,&A,0,&la);
> SQLBindCol(hstmt,3,SQL_C_ULONG,&B,0,&lb);
> SQLBindCol(hstmt,4,SQL_C_ULONG,&C,0,&lc);
> SQLBindCol(hstmt,5,SQL_C_ULONG,&D,0,&ld);
> //SQLExecDirect(hstmt,(UCHAR FAR *)"select * from connaissance",SQL_NTS);
> strcpy(request,"select * from ");
> strcat(request,nom_table);
> strcat(request,";");
> //strcat(request," where designation like ?");
> //SQLPrepare(hstmt,"select * from connaidiabete where designation like
> ?",SQL_NTS);
> SQLExecDirect(hstmt,(UCHAR FAR *)request,SQL_NTS);
> //SQLPrepare(hstmt,request."where designation like ?",SQL_NTS);
> //SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,
> SQL_VARCHAR,20,0,valeur,0,&taille);
> //SQLExecute(hstmt);
> 
> while (SQLFetch(hstmt)!=SQL_NO_DATA)
> {
> 
>     if(strcmp(valeur,design)==0)
> printf("oui\n");
> 
> }
> SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
> SQLFreeHandle(SQL_HANDLE_ENV,henv);
> SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
> SQLDisconnect(hdbc);
> 
> //SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
> //SQLFreeHandle(SQL_HANDLE_ENV,henv);
> }
> 
> 
> Après la compilation et l'exécution j'aurais ce message:
> Erreur sur l'instruction SQLConnect !\n
> 
> C'est à dire la connexion ne passe pas bien.
> 
> j'ai consulté la documentation sur la chaine de connexion dans visual studio
> 2008 dans le
> lien suivant. Mais je ne trouve pas une solution.
> 
> http://msdn.microsoft.com/en-us/library/ms711810(VS.85).aspx
> 
> Comment ce problème de connexion va être résolue?
> Avez-vous un exemple de test pour tester ma connexion et traiter quelques
> requêtes ?
> 
> Le reste de travail se base sur la réussite du  connexion au base des
> données et l'exécution des requêtes.
> SVP, j'ai besoin de votre aide.
> 
> A++

-- 
MySQL ODBC Mailing List
For list archives: http://lists.mysql.com/myodbc
To unsubscribe:    http://lists.mysql.com/[email protected]