Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr (premières livraisons mi-mai)

Si vous avez des soucis pour rester connecté, déconnectez vous et reconnectez vous depuis ce lien en cochant le case
Me connecter automatiquement lors de mes prochaines visites.

M.A.J. en cours du forum possibilité de bug, nous faisons le maximum pour les résoudre au plus vite

#26 Le 24/01/2013, à 19: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, à 19: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, à 20: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, à 21: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, à 21: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, à 22: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, à 22:14

mauribilis

Re : connection BDD Mysql dans code C

int etat_activee = "etat_activee";

Hors ligne

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

mauribilis

Re : connection BDD Mysql dans code C

erreur toujours pareil en ayant viré -lmysql

Hors ligne

#34 Le 24/01/2013, à 22: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, à 15: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, à 16: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, à 20: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, à 21: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, à 21: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, à 09: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, à 22: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, à 22:52)

Hors ligne