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". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#26 Le 24/01/2013, à 18:29

mauribilis

Re : connection BDD Mysql dans code C

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

Hors ligne

#27 Le 24/01/2013, à 18:42

telliam

Re : connection BDD Mysql dans code C

rajoute -lmysql


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

Hors ligne

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

mauribilis

Re : connection BDD Mysql dans code C

gcc -I/usr/include -lmysqlclient -lmysql -o test_mysql  test_mysql.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]
/usr/bin/ld: cannot find -lmysql
collect2: ld a retourné 1 code d'état d'exécution

Hors ligne

#29 Le 24/01/2013, à 20:05

telliam

Re : connection BDD Mysql dans code C

rajoute : -L/usr/lib/mysql


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

Hors ligne

#30 Le 24/01/2013, à 20:34

mauribilis

Re : connection BDD Mysql dans code C

test_mysql.c: In function ‘main’:
test_mysql.c:17:26: attention : initialization makes integer from pointer without a cast [enabled by default]
/usr/bin/ld: cannot find -lmysql
collect2: ld a retourné 1 code d'état d'exécution

Hors ligne

#31 Le 24/01/2013, à 21:08

telliam

Re : connection BDD Mysql dans code C

vire le -lmysql
c quoi la ligne de code a la ligne 17?


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

Hors ligne

#32 Le 24/01/2013, à 21:14

mauribilis

Re : connection BDD Mysql dans code C

int etat_activee = "etat_activee";

Hors ligne

#33 Le 24/01/2013, à 21:14

mauribilis

Re : connection BDD Mysql dans code C

erreur toujours pareil en ayant viré -lmysql

Hors ligne

#34 Le 24/01/2013, à 21:20

telliam

Re : connection BDD Mysql dans code C

mauribilis a écrit :

int etat_activee = "etat_activee";

il y a un pb dans ton code
avec cette ligne tu assignes a un entier une chaine de caracteres.


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

Hors ligne

#35 Le 26/01/2013, à 14:22

mauribilis

Re : connection BDD Mysql dans code C

erreur : /tmp/cc8dj0sW.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+0x104): undefined reference to `mysql_query'
test_mysql.c:(.text+0x113): 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");
char * 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

#36 Le 26/01/2013, à 15:16

telliam

Re : connection BDD Mysql dans code C

Redonne la ligne de compilation stp?


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

Hors ligne

#37 Le 27/01/2013, à 19:28

mauribilis

Re : connection BDD Mysql dans code C

gcc -I/usr/include -lmysqlclient -lmysql -L/usr/lib/mysql -o test_mysql  test_mysql.c

Hors ligne

#38 Le 27/01/2013, à 20:17

telliam

Re : connection BDD Mysql dans code C

est ce que libmysqlclient.so est bien sous /usr/lib/mysql ?


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

Hors ligne

#39 Le 27/01/2013, à 20:43

eiger

Re : connection BDD Mysql dans code C

Et comme ci-dessous, ça donne quoi ?

mauribilis a écrit :

gcc -I/usr/include -L/usr/lib/mysql -o test_mysql  test_mysql.c -lmysqlclient -lmysql

Hors ligne

#40 Le 28/01/2013, à 08:58

Melrock

Re : connection BDD Mysql dans code C

mauribilis a écrit :

int etat_activee = "etat_activee";

Tu ne peux pas écrire une chaîne de caractères dans un "int"
En plus, tu ne t'en sert pas par la suite : elle n'est pas utilisée par ton sprintf.
Qu'est-ce que tu veux obtenir, comme requête ?

(ne mélangeons pas, cette erreur là n'a rien à voir avec les erreur de compilation "undefined reference to `mysql_init'" etc.)


Tout problème a sa solution, donc s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Hors ligne

#41 Le 24/02/2013, à 21:52

mauribilis

Re : connection BDD Mysql dans code C

désolé de ne plus avoir suivie le topic depuis plusieurs semaines (beaucoup de boulot) j'ai recommence à zéro un code qui marche :

#include <mysql.h>
#include <stdio.h>

main() {
  MYSQL *conn;
  MYSQL_RES *res;
  MYSQL_ROW row;

  char *server = "localhost";
  char *user = "root";

  char *password = "password"; 
  char *database = "composant_live";

  conn = mysql_init(NULL);


  if (!mysql_real_connect(conn, server,
        user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));

  }


  if (mysql_query(conn, "SELECT etat FROM composant WHERE id LIKE '1'")) {
      fprintf(stderr, "%s\n", mysql_error(conn));

  }

  res = mysql_use_result(conn);


  printf("Etat :\n");
  while ((row = mysql_fetch_row(res)) != NULL)
  printf("%s °C\n", row[0]);

char s_Mail[] = "echo row[0] | mail -s \"Rapport Journalier du système\" destinatire@domaine.com -- -f expediteur@domaine.com";
        system(s_Mail);

  mysql_free_result(res);
  mysql_close(conn);
}

le code trouve une valeur dans la bdd l'affiche puis l'envoie par mail, mais l'ennuie c'est que row[0] contient l'information que je veux envoyer par mail, mais quand je met row[0] après echo pour l'envoie du mail, le massage reçue par le destinataire affiche row[0] en clair mais pas sa valeur cela doit être un problème de variable comment faire ? 

merci d'avance

Dernière modification par mauribilis (Le 24/02/2013, à 21:52)

Hors ligne

Haut de page ↑