[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux] MySQL et C



Un peu de lecture :

Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language,
Prentice Hall, 1988, second edition. Version en français chez Masson.

Un petit cours online : http://www-igm.univ-mlv.fr/~mac/ENS/C.html

Les concepts importants sont les pointeurs, les types de données.

Pour MySQL, il y a plusieurs informations dans les structures standards
MySQL (comme MYSQL, MYSQL_RES). MYSQL_RES est très pratique puisque c'est
une structure qui contient toutes les infos de retour de ta requete SQL.

Je te conseille aussi de lire la doc sur l'API MYSQL, par exemple, dans tu
fais une  requetes SQL mais tu ne termines pas un null-byte (\0). Il faut
tjs terminer par un null-byte avec cette fonction sinon il ne connait pas
la fin de la requete.

Dans ton "exemple", tu aurais du faire un truc du genre
/* n'oublie pas les includes standard et mysql*/
....
#include "mysql.h"

/* static */
char request_buffer[255];
MYSQL *sock,mysql,

/* Te connecter à la DB et tjs TESTER si cela fonctionne*/
if( !(sock = mysql_connect( &mysql, "localhost", "nobody", "mmmmpassword")) )
 {
     fprintf( stderr, "Couldn't connect to engine!\n%s\n\n", mysql_error( &mysql ) );
     exit(1);
}

/* La bonne db */
if( mysql_select_db( sock, "test" ) )
 {
 fprintf( stderr, "Couldn't select db test!\n%s\n", mysql_error( sock ) );
                        exit(1);
 }
sprintf( request_buffer, "select * from magrossetable\0");


ensuite seulement tu peux faire ton mysqlquery mysql_query (sock,
request_buffer)

La meilleur solution est de lire la doc MySQL, d'avoir une bonne base en C
et connaitre un peu SQL.

hope this helps

alx




-- 
---
Alexandre Dulaunoy
  Work    : http://www.conostix.com/       adulau@conostix.com
  Private : http://www.thinkingsecure.com/ adulau@thinkingsecure.com

"Liberty is the great parent of science and of virtue; and a nation will
be great in both in proportion as it is free. " T. Jefferson



On Mon, 13 Aug 2001, Marc Raeymaekers wrote:

> Bonjour, bonsoir,
>
> Toujours avec mon étude sur SQL. Je souhaiterais faire une interface graphique
> avec GTK+ de ma base de données, mais pour cela, il me faut coder un programme
> en C.
> Et c'est là que Perl marque d'énormes points par rapport au C: le traitement
> des
> chaînes de caractères. Je sais ce n'est pas une découverte, puisque c'est pour
> ça que Perl a été créé.
>
> Par exemple:
>
> mysql_query(&mysql,"INSERT INTO eleve VALUES(NULL,1,2,1,5,2)");
>
> fonctionne convenablement, mais par contre lorsque que je veux passer ces
> valeurs par des variables, cela ne fonctionne pas du tout:
>
> /* toutes les déclarations sont faites auparavant */
> val1=1;
> val2=2;
> val3=1;
> val4=5;
> val5=2;
> mysql_query(&mysql,"INSERT INTO eleve VALUES(NULL,val1,val2,val3,val4,val5)");
>
> là par contre, rien ne fonctionne.
>
> Je me suis dit que j'allais essayer avec un sprintf().
>
> char *string;
> sprintf(string,"INSERT INTO eleve
> VALUES(NULL,%d,%d,%d,%d,%d)",val1,val2,val3,val4,val5);
> mysql_query(&mysql,string);
>
> et maintenant j'obtiens un "Segmentation fault".
>
> Je ne vais quand même pas passer par une cascade de strcat() (plus la
> conversion
> de int en caractères) pour construire la chaîne de caractères à envoyer à
> mysql_query().
>
> On ne va pas se faire em***** par une bêtise pareille. Moi qui me faisais une
> joie
> de bosser à nouveau sur GTK+.
>
> Il semble que Perl possède un module graphique... Perl-GTK je crois. Quelqu'un
> a déjà joué avec ça?
>
> [ Soyez précis dans vos sujets svp afin de déterminer directement  ]
> [ le type de demande...                                            ]
> [ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
> [ Archives de la mailing list: http://archives.linuxbe.org/linux/  ]
> [ http://LinuxBe.org              Contact: listmaster@linuxbe.org  ]
>


[ Soyez précis dans vos sujets svp afin de déterminer directement  ]
[ le type de demande...                                            ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
[ Archives de la mailing list: http://archives.linuxbe.org/linux/  ]
[ http://LinuxBe.org              Contact: listmaster@linuxbe.org  ]