Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 23/01/2013, à 18:56

mauribilis

connection BDD Mysql dans code C

pour un projet je dois me connecté à une bdd mysql avec un code C sous ubuntu 12.04

voici le code :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <winsock.h>
#include <MYSQL/mysql.h>
 
 
 
int main(void)
{
 
            //Déclaration de l'objet de type MYSQL
            MYSQL mysql;
            //Initialisation de MySQL
            mysql_init(&mysql);
            //Options de connexion
            mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
 
            //Si la connexion réussie...
            if(mysql_real_connect(&mysql,"localhost","root","password","composant_live",0,NULL,0))
            {
                //On déclare un tableau de char pour y stocker la requete
                char requete[150] = "";
 
                //On stock la requete dans notre tableau de char
                sprintf(requete, "INSERT INTO clavier VALUES('', '1')", etat_activee);
 
 
                //On execute la requete
                mysql_query(&mysql, requete);
 
 
                //Fermeture de MySQL
                mysql_close(&mysql);
            }
            else
            {
                printf("Une erreur s'est produite lors de la connexion a la BDD!");
            }
 
 
 
    return 0;
}

mais lors de la compilation j'ai cette erreur
test_mysql.c:4:21: erreur fatale: winsock.h : Aucun fichier ou dossier de ce type
et celle-ci
test_mysql.c:4:25: erreur fatale: MYSQL/mysql.h : Aucun fichier ou dossier de ce type

il doit avoir des librairies spécial avec ubuntu mais je ne sais pas comment faire

merci d'avance

Hors ligne

#2 Le 23/01/2013, à 22:47

telliam

Re : connection BDD Mysql dans code C

salut,
winsock.h est un fichier .h de windows .
As tu bien installé la version dev de la lib mysql? quel est ta ligne de compilation?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#3 Le 23/01/2013, à 23:38

mauribilis

Re : connection BDD Mysql dans code C

salut et merci de l'aide,
j'ai installé le paquet libmysqlclient15-dev donc je dirais que oui ma ligne de compilation est gcc -o fichier fichier.c

Hors ligne

#4 Le 24/01/2013, à 00:02

telliam

Re : connection BDD Mysql dans code C

essaye :
gcc -I/usr/include -lmysqlclient -o fichier
et mets #include <mysql/mysql.h> (minuscules)


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#5 Le 24/01/2013, à 00:13

mauribilis

Re : connection BDD Mysql dans code C

/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld a retourné 1 code d'état d'exécution

code :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <mysql/mysql.h>
 
 
int main(void)
{
 
            //Déclaration de l'objet de type MYSQL
            MYSQL mysql;
            //Initialisation de MySQL
            mysql_init(&mysql);
            //Options de connexion
            mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
 
            //Si la connexion réussie...
            if(mysql_real_connect(&mysql,"localhost","root","password","composant_live",0,NULL,0))
            {
                //On déclare un tableau de char pour y stocker la requete
                char requete[150] = "";
 
                //On stock la requete dans notre tableau de char
                sprintf(requete, "INSERT INTO clavier VALUES('', '1')", etat_activee);
 
 
                //On execute la requete
                mysql_query(&mysql, requete);
 
 
                //Fermeture de MySQL
                mysql_close(&mysql);
            }
            else
            {
                printf("Une erreur s'est produite lors de la connexion a la BDD!");
            }
 
 
 
    return 0;
}

Hors ligne

#6 Le 24/01/2013, à 00:16

telliam

Re : connection BDD Mysql dans code C

la bonne signature est
int main(int argc, char **argv)


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#7 Le 24/01/2013, à 10:42

mauribilis

Re : connection BDD Mysql dans code C

même erreur

code :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <mysql/mysql.h>
 
 
 
int main(int argc, char **argv)
{
 
            //Déclaration de l'objet de type MYSQL
            MYSQL mysql;
            //Initialisation de MySQL
            mysql_init(&mysql);
            //Options de connexion
            mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
 
            //Si la connexion réussie...
            if(mysql_real_connect(&mysql,"localhost","root","password","composant_live",0,NULL,0))
            {
                //On déclare un tableau de char pour y stocker la requete
                char requete[150] = "";
 
                //On stock la requete dans notre tableau de char
                sprintf(requete, "INSERT INTO clavier VALUES('', '1')", etat_activee);
 
 
                //On execute la requete
                mysql_query(&mysql, requete);
 
 
                //Fermeture de MySQL
                mysql_close(&mysql);
            }
            else
            {
                printf("Une erreur s'est produite lors de la connexion a la BDD!");
            }
 
 
 
    return 0;
}

Dernière modification par mauribilis (Le 24/01/2013, à 10:43)

Hors ligne

#8 Le 24/01/2013, à 10:48

telliam

Re : connection BDD Mysql dans code C

j'ai faut une boulette dans ma ligne de commande

gcc -I/usr/include -lmysqlclient -o fichier  fichier.c

ou sinon

gcc -I/usr/include -lmysqlclient -o fichier.o  -c fichier.c
gcc -lmysqlclient -o fichier fichier.o

"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#9 Le 24/01/2013, à 10:54

mauribilis

Re : connection BDD Mysql dans code C

OK merci dès que j'ai le temps je teste, ça fait longtemps que je n'ai plus programmé en C je voudrais convertir un binaire en decimal et j'ai trouvé ce code :

#include <stdio.h>
int main(void)
{
char leBinaire;
int leDecimal = 0;
while (leBinaire != '\n')
{
scanf("%c",&leBinaire);
if (leBinaire == '1')
leDecimal = leDecimal * 2 + 1;
else if (leBinaire == '0')
leDecimal *= 2;
}
printf("%d\n", leDecimal);
return 0;
} 

l'ennuie c'est que la valeur binaire à récupérer de mon projet provient d'un capteur ce n'es pas un utilisateur qui doit entrée le nombre binaire il faut qu'il soit prédéfinie dans une variable
mais je suis rouillé pourrais tu m'aider ?

Hors ligne

#10 Le 24/01/2013, à 10:58

telliam

Re : connection BDD Mysql dans code C

comment est ce que tu récupère la valeur sur ton capteur?
il t'envoie bit a bit?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#11 Le 24/01/2013, à 11:14

mauribilis

Re : connection BDD Mysql dans code C

oui

Hors ligne

#12 Le 24/01/2013, à 11:14

telliam

Re : connection BDD Mysql dans code C

et tu vx sur du 8, 16 ou 32 bits?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#13 Le 24/01/2013, à 11:17

mauribilis

Re : connection BDD Mysql dans code C

16 bits

Hors ligne

#14 Le 24/01/2013, à 11:22

telliam

Re : connection BDD Mysql dans code C

bit de poids faible en début ou fin?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#15 Le 24/01/2013, à 11:25

mauribilis

Re : connection BDD Mysql dans code C

bits de poids faible

Hors ligne

#16 Le 24/01/2013, à 11:26

mauribilis

Re : connection BDD Mysql dans code C

bits de poids faible en fin

Hors ligne

#17 Le 24/01/2013, à 11:35

telliam

Re : connection BDD Mysql dans code C

unsigned short read_short()
{
  unsigned short val = 0;
  unsigned int i;

  for (i=0; i < sizeof(val)*8;i++)
  {
    unsigned short read = lecture_du_bit();
    val = (val <<1) | read;
  } 
  return val;
}

"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#18 Le 24/01/2013, à 11:38

mauribilis

Re : connection BDD Mysql dans code C

unsigned short read = lecture_du_bit();

lecture_du_bit(); c'est la variable qui doit contenir la valeur binaire ?

Hors ligne

#19 Le 24/01/2013, à 11:39

telliam

Re : connection BDD Mysql dans code C

oui c'est la fonction que tu dois rajouter pour aller lire sur ton capteur et renvoyer le bit


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#20 Le 24/01/2013, à 11:42

mauribilis

Re : connection BDD Mysql dans code C

et val est la valeur decimal ?

donc si je veux envoyer la valeur decimal en bdd il faut prendre la variable val ?

donc dans le code c je fais un include du code de communication mysql puis la valeur pour la bdd est val non ?

Hors ligne

#21 Le 24/01/2013, à 12:41

telliam

Re : connection BDD Mysql dans code C

bdd?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#22 Le 24/01/2013, à 13:09

mauribilis

Re : connection BDD Mysql dans code C

erreur :
test_mysql.c: In function ‘main’:
test_mysql.c:25:72: erreur: ‘etat_activee’ undeclared (first use in this function)
test_mysql.c:25:72: note: each undeclared identifier is reported only once for each function it appears in

code :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <mysql/mysql.h>
 
 
 
int main(int argc, char **argv)
{
 
            //Déclaration de l'objet de type MYSQL
            MYSQL mysql;
            //Initialisation de MySQL
            mysql_init(&mysql);
            //Options de connexion
            mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
 
            //Si la connexion réussie...
            if(mysql_real_connect(&mysql,"localhost","root","password","composant_live",0,NULL,0))
            {
                //On déclare un tableau de char pour y stocker la requete
                char requete[150] = "";
 
                //On stock la requete dans notre tableau de char
                sprintf(requete, "INSERT INTO ballon VALUES('', '1')", etat_activee);
 
 
                //On execute la requete
                mysql_query(&mysql, requete);
 
 
                //Fermeture de MySQL
                mysql_close(&mysql);
            }
            else
            {
                printf("Une erreur s'est produite lors de la connexion a la BDD!");
            }
 
 
 
    return 0;
}

Hors ligne

#23 Le 24/01/2013, à 13:24

telliam

Re : connection BDD Mysql dans code C

ben c tout con la variable etat_activee n'est pas déclarée,
en plus dans ton sprintf, elle ne sert a rien ou alors il manque un caractere spéciale (%d surement) pour insérer la valeur dans la chaine de characteres.


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#24 Le 24/01/2013, à 19:00

mauribilis

Re : connection BDD Mysql dans code C

erreur :

test_mysql.c: In function ‘main’:
test_mysql.c:17:26: attention : initialization makes integer from pointer without a cast [enabled by default]
/tmp/cc9EJOLD.o: In function `main':
test_mysql.c:(.text+0x32): undefined reference to `mysql_init'
test_mysql.c:(.text+0x4b): undefined reference to `mysql_options'
test_mysql.c:(.text+0x91): undefined reference to `mysql_real_connect'
test_mysql.c:(.text+0x103): undefined reference to `mysql_query'
test_mysql.c:(.text+0x112): undefined reference to `mysql_close'
collect2: ld a retourné 1 code d'état d'exécution

code :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <mysql/mysql.h>
 
 
 
int main(int argc, char **argv)
{
 
            //Déclaration de l'objet de type MYSQL
            MYSQL mysql;
            //Initialisation de MySQL
            mysql_init(&mysql);
            //Options de connexion
            mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
 	    int etat_activee = "etat_activee";
            //Si la connexion réussie...
            if(mysql_real_connect(&mysql,"localhost","root","password","composant_live",0,NULL,0))
            {
                //On déclare un tableau de char pour y stocker la requete
                char requete[150] = "";
 
                //On stock la requete dans notre tableau de char
                sprintf(requete, "INSERT INTO ballon VALUES('', '1')", etat_activee);
 
 
                //On execute la requete
                mysql_query(&mysql, requete);
 
 
                //Fermeture de MySQL
                mysql_close(&mysql);
            }
            else
            {
                printf("Une erreur s'est produite lors de la connexion a la BDD!");
            }
 
 
 
    return 0;
}

Hors ligne

#25 Le 24/01/2013, à 19:25

telliam

Re : connection BDD Mysql dans code C

px tu me donner ta ligne de compilation gcc? il doit te manquer un -lmysqclient


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

Haut de page ↑