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

boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 - 14 juil. 2009 à 12:14
houdanor Messages postés 1 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 27 février 2011 - 27 févr. 2011 à 18:20
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.

3 réponses

boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
14 juil. 2009 à 16:30
Salut,
Après l'exécution j'obtiens:
retcode=-1  c'est la valeur de retour de SQLConnect
Erreur sur l'instruction SQLConnect Impossible de se connecter a la source de donnees:
1. [

- Qu'est ce que signifie ce message d'erreur ?:  1. [  
- Comment je trace ODBC ?
0
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
16 juil. 2009 à 15:18
salut,

A premiere vue:
pas de SQLDriverConnect mais tu peux
utiliser une proc du genre pour tracer des messages
avec
#define MAWBUFLEN 256
void ProcessLogMessages(SQLSMALLINT plm_handle_type,
SQLHANDLE plm_handle,
char *logstring, int ConnInd)
{
RETCODE plm_retcode = SQL_SUCCESS;
UCHAR plm_szSqlState[MAXBUFLEN] = "",
plm_szErrorMsg[MAXBUFLEN] = "";
SDWORD plm_pfNativeError = 0L;
SWORD plm_pcbErrorMsg = 0;
SQLSMALLINT plm_cRecNmbr = 1;
SDWORD plm_SS_MsgState 0, plm_SS_Severity 0;
SQLINTEGER plm_Rownumber = 0;
USHORT plm_SS_Line;
SQLSMALLINT plm_cbSS_Procname, plm_cbSS_Srvname;
SQLCHAR plm_SS_Procname[256], plm_SS_Srvname[256];
cerr<<logstring<<endl;

while (plm_retcode != SQL_NO_DATA_FOUND) {
plm_retcode = SQLGetDiagRec(plm_handle_type, plm_handle,
plm_cRecNmbr, plm_szSqlState, &plm_pfNativeError,
plm_szErrorMsg, MAXBUFLEN - 1, &plm_pcbErrorMsg);

if (plm_retcode != SQL_NO_DATA_FOUND) {
if (ConnInd) {
plm_retcode = SQLGetDiagField(
plm_handle_type, plm_handle, plm_cRecNmbr,
SQL_DIAG_ROW_NUMBER, &plm_Rownumber,
SQL_IS_INTEGER,
NULL);
}
cerr<<"szSqlState = "<<plm_szSqlState<<endl;
cerr<<"pfNativeError = "<<plm_pfNativeError<<endl;
cerr<<"szErrorMsg = "<<plm_szErrorMsg<<endl;
cerr<<"pcbErrorMsg = "<<plm_pcbErrorMsg<<endl;

if (ConnInd) {
cerr<<"ODBCRowNumber = "<< plm_Rownumber<<endl;
cerr<<"SSrvrLine = "<< plm_Rownumber<<endl;
cerr<<"SSrvrMsgState = "<<plm_SS_MsgState<<endl;
cerr<<"SSrvrSeverity = "<<plm_SS_Severity<<endl;
cerr<<"SSrvrProcname = "<<plm_SS_Procname<<endl;
cerr<<"SSrvrSrvname = "<<plm_SS_Srvname<<endl;
}
}
plm_cRecNmbr++; //Increment to next diagnostic record.
} // End while.
}
0
houdanor Messages postés 1 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 27 février 2011
27 févr. 2011 à 18:20
j'ai etablie la connexion avec la bd et je veus la requete de l'ecoute listen request
0
Rejoignez-nous