[LINUX] Connexion mysql en C

Signaler
Messages postés
10
Date d'inscription
samedi 10 novembre 2001
Statut
Membre
Dernière intervention
7 août 2007
-
Messages postés
12
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
28 février 2005
-
Bonjour,
J'essaie de programmer une connexion mysql en C afin d'y insérer un enregistrement.
Voici mon code actuel :
========================================================
#include <stdio.h>
#include <stdlib.h>
#include "/usr/include/mysql/mysql.h"

MYSQL *pointconn;

int main (void)
{
pointconn = mysql_init(NULL);
mysql_real_connect(pointconn, "127.0.0.1", "root", "pass", "test", 0, NULL, 0);

mysql_query(pointconn, "SELECT * FROM tbl_test");
printf ("Yop : %lu lignes\n", (unsigned long) mysql_affected_rows(pointconn));

mysql_close(pointconn);

exit(0);
return(0);
}
=========================================================

Mon problème c'est que lors de la compilation (gcc mysql.c -o prog.bin), il me dit que toutes les fonctions mysql (mysql_init, mysql_query...) sont undefined. Pourtant le fichier /usr/include/mysql/mysql.h existe. J'ai également installé les librairies mysql_devel.

Merci d'avance pour votre aide

Juju

3 réponses

Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
en fait tu dois avoir une fichier "librairie" extension .a qui contient les définitions des fonctions de mySQL et en fait il faut que tu specifies au compilateur (gcc en l'ocurence) que tu veux compiler le programme avec cette libraire !
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
essai ca:
gcc mysql.c -o prog.bin -lmysqlclient
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
12
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
28 février 2005

Pour info, il y a une différence entre les .a (liaison statique du
style gcc main.o /usr/lib/fichier.a) et .so (liaison dynamique du style
gcc main.o -lfichier (pour /usr/lib/fichier.so)).



Dans le premier cas (déconseillé la plupart du temps), ton exécutable est plus gros et doit etre recompilé à chaque mise à jour.

Michael Hooreman

DBA Oracle

Programmeur Free Softwares