Bonjour à tous,
Je cherche actuelement à écrire des valeurs et des chaines de caractère dans une base de donnée, à partir d'un programme en C. Pour information, je travail sur Linux.
Merci d'avance pour votre aide.
Bonjour à tous,
Je cherche actuelement à écrire des valeurs et des chaines de caractère dans une base de donnée, à partir d'un programme en C. Pour information, je travail sur Linux.
Merci d'avance pour votre aide.
Bonjour,
Doit on deviner avec quelle base de donnée tu travailles ?
J'utilise MySQL
Par contre, j'ai vu qu'il existé des solution avec oracle ou autre, mais je prefere un freeware ou une autre méthode ^^
Salut,
Il existe des bibliothèques pour s'interfacer avec MySQL dans tous les langages.
En C, par exemple:
http://dev.mysql.com/doc/refman/5.0/en/c.html
A+.
For crying out loud !
Oui je suis en train de lire ^^. Je cherche l'install de la librari pour pouvoir utiliser :
#include <my_global.h>
#include <mysql.h>
Sur linux bien sur ^p^
C'est bon je les ai trouvé, je vais me pencher sur les fonctions maintenant ^^. Au passage ma distrib c'est Ubuntu ( ).
Si vous avez des exemple tout fait, qui permettent de juste selectionné une table, l'ouvrir et écrire dans un champs, je vous en serais très reconnaissant.
Merci !!!!
Voila un exemple mais c'est sous windows. A toi d'adapter a Linux :
La connection à la base :
L'ajout de valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 MYSQL * connection(){ MYSQL * mysql ; mysql = mysql_init(NULL) ; if(!mysql_real_connect(mysql,"localhost","root","root","tabase",0,NULL,0)){ printf("Erreur dans la connection de la base : %s\n",mysql_error(mysql)) ; }else{ printf("Vous etes connecte a la base de donnees ......\n\n\n\n") ; } return mysql ; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 printf("Vous allez ajouter un client dans la base\n"); printf("Entrer le numéro de client : "); num = saisirEntier() ; printf("Entrer le nom du client : "); scanf("%s",&nom); printf("Entrer le prenom du client : "); scanf("%s",&prenom); printf("Entrer le numero de rue : "); scanf("%d",&numrue); printf("Entrer le nom de la rue : "); scanf("%s",&nomrue); printf("Entrer le code postal : "); scanf("%d",&code); printf("Entrer la ville : "); scanf("%s",&ville); sprintf(requete,"insert into client values('%d','%s','%s','%d','%s','%d','%s');",num, nom, prenom, numrue, nomrue, code, ville); mysql_real_query(mysql,requete,(unsigned int) strlen(requete)); printf("\n"); printf("CLIENT AJOUTE ..........."); printf("\n"); printf("Voulez vous retourner au menu (0/1)?"); scanf("%d",&retour); break;
Pensez à utiliser
est ton ami
La France c'est l'Auvergne avec un petit peu de terre autour !!!
Merci, je vais essayer et je pense avoir compris, merci !!!
Au fait, ici le nom de ta table, c'est bien "client" ? (pour ton exemple d'écriture, pas de connection).
Et aussi en quoi est déclaré ton "requete" ??
Oui le nom de ma table est bien client :
Les différentes insertion correspondent au nom des différents champs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sprintf(requete,"insert into client values('%d','%s','%s','%d','%s','%d','%s');",num, nom, prenom, numrue, nomrue, code, ville);
Pensez à utiliser
est ton ami
La France c'est l'Auvergne avec un petit peu de terre autour !!!
Et je déclare requete en quoi ?
char* ???
Mon "requete" est enmais je pense que tu peux le déclarer en
Code : Sélectionner tout - Visualiser dans une fenêtre à part char requete[255]sans soucis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *
Pensez à utiliser
est ton ami
La France c'est l'Auvergne avec un petit peu de terre autour !!!
C la même chose ^^.
Par contre j'ai compiler, j'arrive à me connecter, mais j'ai ce message d'avertissement lors de la compilation:
attention : incompatible implicit declaration of built-in function «strlen»
et bien sur, lorsque je lance le prog, je peux rentrer les valeurs des différentes variable de ma table, mais elle ne s'écrivent pas , voilà mon code :
Dans ma base, j'ai bien évidement les 9 variables (date, index, phase,....) écrit tel quel. Le prog me return "Problème d'interrogation". Donc cela n'écrit pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 #include <my_global.h> #include <mysql.h> #include <stdio.h> #include <stdlib.h> MYSQL *conn; int main(int argc, char**args) { MYSQL *con; MYSQL_RES *res; MYSQL_ROW row; unsigned int nb; unsigned long *lengths; unsigned int i; char index[100],date[100],phase[100],t_dessous[100],t_dedans[100],t_dessus[100],hygro[100],ventilation[100],rotation[100],resistance_1[100],resistance2[100],resistance3[100],resistance4[100],niveau[100],ev_remplissage[100],ev_vidange[100],requete[2000]; conn = mysql_init(NULL); if (conn==NULL) { printf ("\aErreur d'initiation du client !\n"); exit(EXIT_FAILURE); } con = mysql_real_connect(conn, "localhost", "root", "azerty", "malterie", 3306, NULL,0); if (con==NULL) { printf ("\aErreur de connection du client !\n"); exit(EXIT_FAILURE); } else { printf ("Connection établi !\nWelcome !\n"); printf("Vous allez ajouter des données dans la base\n"); printf("Entrer le numéro de l'index : \r\n"); scanf("%s",&index); printf("Entrer la date (xx.xx.xxxx) : \r\n"); scanf("%s",&date); printf("Entrer la phase en cour : \r\n"); scanf("%s",&phase); printf("Entrer la temperature de dessous : \r\n"); scanf("%s",&t_dessous); printf("Entrer la temperature de dedans : \r\n"); scanf("%s",&t_dedans); printf("Entrer la temperature de dessus : \r\n"); scanf("%s",&t_dessus); printf("Entrer l'état du moteur (on , off) : \r\n"); scanf("%s",&rotation); printf("Entrer le niveau d'eau (haut , bas) : \r\n"); scanf("%s",&niveau); printf("Entrer l'état de l'électrovanne de remplissage (on , off) : \r\n"); scanf("%s",&ev_remplissage); sprintf(requete,"insert into client values('%s','%s','%s','%s','%s','%s','%s','%s','%s');",index, date, phase, t_dessous, t_dedans, t_dessus, rotation, niveau, ev_remplissage); if(mysql_real_query(conn,requete,(unsigned int) strlen(requete))==0) { printf("Données ajoutées correctement dans la base !! ^^ =p xD >< :) ;) !p ( . )( . ) \r\n"); mysql_close(conn); printf("Fermeture du client. Bye !\r\n"); return 0; } else { printf ("\aProblème d'interrogation !\n"); mysql_close(conn); printf("Fermeture du client. Bye !\n"); return 0; } } }
Si quelqu'un voit l'erreur ... Merci ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <string.h>
"The quieter you become, the more you are able to hear"
"Plus vous êtes silencieux, plus vous êtes capable d'entendre"
C'est bon, j'ai remplacé, mais cela ne fonctionne toujours pas....
Ma base de donnée s'apelle malterie, et ma table "maltage", il faut bien que j'écrive ceci ? :
sprintf(requete,"insert into maltage values('%s','%s','%s','%s','%s','%s','%s','%s','%s');",index, date, phase, t_dessous, t_dedans, t_dessus, rotation, niveau, ev_remplissage);
Dans ma base, j'ai déclaré les champs en type VAR(100). je ne comprend pas pourquoi cela ne marche pas....
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager