Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1440 connectés 

  FORUM HardWare.fr
  Programmation
  C

  connecter à une base de données Mysql via ODBC à partir du C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

connecter à une base de données Mysql via ODBC à partir du C

n°1902422
dimadima
Posté le 05-07-2009 à 21:35:45  profilanswer
 

Salut,
 
Je voudrais connecter à une base de données Mysql via ODBC à partir
d'un programme C sous Visual Studio 2008 Windows.
le nom de DSN est : pays_dsn
le nom d'utilisateur : root
le mot de passe est vide
 
le programme est:
 

Code :
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #include <sql.h>
  5. #include <sqlext.h>
  6. #include <sqltypes.h>
  7. intmain()
  8. {
  9. SQLHENVenv;
  10. if(!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV,NULL,&env)))
  11. fprintf(stderr,"La fonction SQLAllocHandle a echoue (SQL_HANDLE_ENV).\n" );
  12. else
  13. {
  14. if(!SQL_SUCCEEDED(SQLSetEnvAttr(env,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0)))
  15. fprintf(stderr,"La fonction SQLSetEnvAttr a echoue.\n" );
  16. else
  17. {
  18. SQLHDBCcon;
  19. if(!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_DBC,env,&con)))
  20. fprintf(stderr,"La fonction SQLAllocHandle a echoue (SQL_HANDLE_DBC).\n" );
  21. else
  22. {
  23. SQLCHARdsn[]="pays_dsn",uid[]="root",pwd[]="";
  24. if(!SQL_SUCCEEDED(SQLConnect(con,dsn,SQL_NTS,uid,SQL_NTS,pwd,SQL_NTS)))
  25. // if ( !SQL_SUCCEEDED(SQLConnect(con,(SQLCHAR *)"pays_dsn", SQL_NTS,(SQLCHAR *)"root", SQL_NTS,(SQLCHAR *)"", SQL_NTS)) )
  26. fprintf(stderr,"La fonction SQLConnect a echoue.\n" );
  27. else
  28. {
  29. SQLHSTMTstmt;
  30. if(!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_STMT,con,&stmt)))
  31. fprintf(stderr,"La fonction SQLAllocHandle a echoue (SQL_HANDLE_STMT).\n" );
  32. else
  33. {
  34. if(!SQL_SUCCEEDED(SQLExecDirect(stmt,"SELECT * FROM pays_tbl;",SQL_NTS)))
  35. fprintf(stderr,"La fonction SQLExecDirect a echoue.\n" );
  36. else
  37. {
  38. SQLCHARpays[15],capitale[15];
  39. printf("PAYS > CAPITALE\n\n" );
  40. while(SQL_SUCCEEDED(SQLFetch(stmt)))
  41. {
  42. SQLGetData(stmt,1,SQL_C_CHAR,pays,sizeof(pays),NULL);
  43. SQLGetData(stmt,2,SQL_C_CHAR,capitale,sizeof(capitale),NULL);
  44. printf("%-14s %-14s\n",pays,capitale);
  45. }
  46. }
  47. SQLFreeHandle(SQL_HANDLE_STMT,stmt);
  48. }
  49. SQLDisconnect(con);
  50. }
  51. SQLFreeHandle(SQL_HANDLE_DBC,con);
  52. }
  53. }
  54. SQLFreeHandle(SQL_HANDLE_ENV,env);
  55. }
  56. getch();
  57. return0;
  58. }


 
 
près la compilation et l'exécution j'aurais ce message:
 
La fonction SQLConnect a echoue.
 
J'ai pris cet exemple de lien suivant:
sur http://melem.developpez.com/langagec/odbc/ [ Lien ]
 
Comment ce problème de connexion va être résolu?
 
SVP, j'ai besoin de vos aides

mood
Publicité
Posté le 05-07-2009 à 21:35:45  profilanswer
 

n°1902497
olivthill
Posté le 06-07-2009 à 09:38:38  profilanswer
 

Citation :

le nom d'utilisateur : root

Le problème vient peut-être de là. Généralement, il faut avoir un compte ordinaire sur la base de données, et souvent l'utilisation du compte administrateur ne peut se faire qu'en local.

n°1902552
msedirim
Posté le 06-07-2009 à 10:47:36  profilanswer
 

Salut,
root: c'est le nom d'utisateur par défaut en local.
je suis sur que ce n'est pas de nom d'utilisateur.
 
le mot de passe ? j'ai mis le mot de passe vide
c'est juste de mettre ceci sans espace: pwd[]=""

n°1902609
Pat333
Posté le 06-07-2009 à 11:52:50  profilanswer
 

dimadima a écrit :

J'ai pris cet exemple de lien suivant:
sur http://melem.developpez.com/


 
Cet exemple est très mauvais (le melem, ce n'est pas une lumière, pour être gentil...)
Reprends les exemples de Microsoft que ce soit du SDK ou KB, qui marchent parfaitement et sont correctement programmés (utilisables en env. de Prod ; je les utilise depuis 1992 et Win 3.1))


Message édité par Pat333 le 06-07-2009 à 11:53:49
n°1902867
msedirim
Posté le 06-07-2009 à 20:01:17  profilanswer
 

Salut,
 
- Pouvez-vous me citer les liens où je trouve les  exemples de Microsoft que ce soit du SDK ou KB?
- c'est quoi SDK et KB ?

n°1902883
Gavrinis
Open your mind
Posté le 06-07-2009 à 20:26:53  profilanswer
 

  • Software Development Kit
  • Knowledge Base


http://msdn.microsoft.com/fr-fr/default.aspx

n°1903356
msedirim
Posté le 07-07-2009 à 21:39:46  profilanswer
 

Salut,
 
Je ne trouve pas des exemples sur :
http://msdn.microsoft.com/fr-fr/default.aspx
 
y a il un exemple du connection à une base de données Mysql via ODBC à partir d'un programme C sous Visual Studio 2008 Windows ?
 
Merci.
 

n°1904211
msedirim
Posté le 09-07-2009 à 20:03:38  profilanswer
 

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.
 
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  connecter à une base de données Mysql via ODBC à partir du C

 

Sujets relatifs
[C/C++] Difference entre pointeur et double pointeur ?[C#] Convertir caractères spéciaux HTML
C++ pointeur, constructeur, attributsConvertir code C# -> VBA ou VBA -> C#
[Eclipse RCP] Affecter différentes données à plusieurs instances d'Télécharger une base de test MantisBT
Visual C++ fenetre de commande[Résolu]Pb trigger Mysql
Executer un ".vbs" à partir d'une page web[Visual C++] Problème conversion System::String ^ et structure
Plus de sujets relatifs à : connecter à une base de données Mysql via ODBC à partir du C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR