problème de connexion à une base de données dans C

boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 - 1 juil. 2009 à 21:06
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 2 juil. 2009 à 15:05
Salut,

1)
- Je voudrais connecter à une base des données crée sous Mysql  de version 5.1.30
le dossier d'installation est : C:\Program Files\EasyPHP 3.0\mysql
- J'ai utilisé API Mysql, mais j'ai trouvé de problème
Voici mon code:

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <libxml/parser.h>
#include <winsock.h>
#include <mysql.h>
#pragma comment(lib,"libxml2.lib")
#pragma comment (lib,"libmysql.lib")

intmain(){
xmlDocPtrdoc;
xmlNodePtrracine;
MYSQLmysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");

// Ouverture du fichier XML
doc=xmlParseFile("catalogue.xml");
if(doc==NULL){
fprintf(stderr,"Document XML invalide\n");
returnEXIT_FAILURE;
}
// Récupération de la racine
racine=xmlDocGetRootElement(doc);
if(racine==NULL){
fprintf(stderr,"Document XML vierge\n");
xmlFreeDoc(doc);
returnEXIT_FAILURE;
}
printf("La racine du document est : %s\n",racine->name);
// Libération de la mémoire
xmlFreeDoc(doc);

returnEXIT_SUCCESS;

if(mysql_real_connect(&mysql,"localhost","root","","chmsi",0,NULL,0))
{
mysql_close(&mysql);
}
else
{
printf("Une erreur s'est produite lors de la connexion à la BDD!");
}

}

Voici le message d'erruer:

1>------Débutdelagénération:Projet:passage,Configuration:DebugWin32------
1>Compilationencours...
1>main.c
1>Éditiondesliensencours...
1>main.obj:errorLNK2019:symboleexternenonrésolu_mysql_close@4référencé danslafonction_main
1>main.obj:errorLNK2019:symboleexternenonrésolu_mysql_real_connect@32référencé danslafonction_main
1>main.obj:errorLNK2019:symboleexternenonrésolu_mysql_options@12référencé danslafonction_main
1>main.obj:errorLNK2019:symboleexternenonrésolu_mysql_init@4référencé danslafonction_main
1>C:\ChGaLib\passage\Debug\passage.exe:fatalerrorLNK1120:4externesnonrésolus
1>Lejournaldegénérationa été enregistré à l'emplacement"file://c:\ChGaLib\passage\passage\Debug\BuildLog.htm"
1>passage-5erreur(s),0avertissement(s)
========Génération:0aréussi,1a échoué,0mis à jour,0a été ignoré ==========

2) Quelles sont les étapes à suivre pour connecter une base des données sous Mysql via ODBC à partir d'un programme C ?

3) Quelle est la différence entre une connexion ODBC et celle de API Mysql ?

SVP, J'ai besoin de vos aides.

4 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
2 juil. 2009 à 09:06
Je n'utilise jamais les #pragma
Tu as un pb de link, a priori, libmysql.lib n'est pas trouvée. As-tu référencé le chemin du genre c:\..\Easy PHP\mysql\lib quelque part ? (dans ton projet visual ou path).
0
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
2 juil. 2009 à 10:13
Salut,
- J'ai seulement le dossier bin sous:
C:\Program Files\EasyPHP 3.0\mysql\bin
- Je ne trouve pas lib et include
J'ai mis libmysql.dll à cpoté main.c sous:
C:\ChGaLib\passage\passage

Voici le code avant de supprimer #pragma comment(lib,"libmysql.lib") :

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#include <mysql.h>
#pragma comment(lib,"libmysql.lib")
int main() {
   
    MYSQL mysql;
    mysql_init(&mysql);
    mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");

       
    if(mysql_real_connect(&mysql,"localhost","root","","chmsi",0,NULL,0))
    {
        mysql_close(&mysql);
    }
    else
    {
        printf("Une erreur s'est produite lors de la connexion à la BDD!");
    }

 
}

Le message d'erreur:
1>------ Début de la génération : Projet : passage, Configuration : Debug Win32 ------
1>Compilation en cours...
1>main.c
1>Édition des liens en cours...
1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'libmysql.lib'
1>Le journal de génération a été enregistré à l'emplacement "file://c:\ChGaLib\passage\passage\Debug\BuildLog.htm"
1>passage - 1 erreur(s), 0 avertissement(s)
======== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

Voici le message d'erreur si je supprime#pragma comment(lib,"libmysql.lib") :

1>------ Début de la génération : Projet : passage, Configuration : Debug Win32 ------
1>Compilation en cours...
1>main.c
1>Édition des liens en cours...
1>main.obj : error LNK2019: symbole externe non résolu _mysql_close@4 référencé dans la fonction _main
1>main.obj : error LNK2019: symbole externe non résolu _mysql_real_connect@32 référencé dans la fonction _main
1>main.obj : error LNK2019: symbole externe non résolu _mysql_options@12 référencé dans la fonction _main
1>main.obj : error LNK2019: symbole externe non résolu _mysql_init@4 référencé dans la fonction _main
1>C:\ChGaLib\passage\Debug\passage.exe : fatal error LNK1120: 4 externes non résolus
1>Le journal de génération a été enregistré à l'emplacement "file://c:\ChGaLib\passage\passage\Debug\BuildLog.htm"
1>passage - 5 erreur(s), 0 avertissement(s) Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré
0
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
2 juil. 2009 à 10:30
Salut,

2) Quelles sont les étapes à suivre pour connecter une base des données sous Mysql via ODBC à partir d'un programme C ?

3) Quelle est la différence entre une connexion ODBC et celle de API Mysql ?
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
2 juil. 2009 à 15:05
Va dans http://dev.mysql.com/downloads/mysql/5.1.html#win32
Télécharge la version zip et extrait le .lib
0
Rejoignez-nous