Salut,
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/li [...] S.85).aspx
Mais, le même problème de connexion ne marche pas .
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.