Salut Patrice > #include <mysql/mysql.h> > #include <string.h> > #include <stdio.h> > #include <stdlib.h> > > void main(){ > > MYSQL *mysql; > MYSQL_RES *res; > MYSQL_ROW row; > char *query,string[2500]; > //char *query1; > int t,r; > mysql_init(mysql); > if (! > mysql_real_connect(mysql,"localhost","user","mdp","base",0,NULL,0)) > { > printf( "Error connecting to database: %s\n",mysql_error(mysql)); > } > else printf( "c'est bon ...."); > query="select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno"; > if (mysql_query(mysql, query)) > { > fprintf(stderr, "%s\n", mysql_error(mysql)); > exit(0); > } > res = mysql_use_result(mysql); > > ICI je pense que tu devrais tester ton pointeur "res" savoir s'il n'est pas NULL car si un problème est survenu pendant la requette (genre le n11 qui n'existe pas) tu peux te retrouver à passer à ta fonction suivante (mysql_fetch_row) un res=NULL > > while ((row = mysql_fetch_row(res)) != NULL) > { > printf( > "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s > \n",row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); > } > mysql_free_result(res); > mysql_close(mysql); > } > Perso je n'ai (mais beaucoup) travaillé qu'avec postgresql en C (et pas mysql en C) mais ça à l'air assez similaire.
En tout état de cause je pense qu'un petit nettoyage de ton source est nécessaire à plusieurs niveau : - query="select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno"; << pas propre du tout me mettre un char * = "une chaine"; surtout que ton pointeur query n'est jamais alloué, contrairement à ton tableau de caractère string qui est alloué statiquement (2500 en taille ça va c'est peinard...) Dans ce genre de cas privilégie plutôt quelque chose comme ça : char query[2500]; sprintf(query, "select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno"); //stdio.h ou strcpy(query, "select n1,n2,n3,n4,n5,n6,n7,n8,n9,n10 from keno"); //string.h - il serait plus propre également d'utiliser un peu plus les boucles for ;) : à la place de printf( "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s \n",row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9]); plutôt faire un : for (i=0;i<10;i++) printf("%s|", row[i]); // << certe tu auras un '|' pour le dernier mais bon... printf("\n"); - Tu pourrais faire une requette du type "select * from keno" et ensuite récupérer le résultat et identifier indépendamment chacun de tes champs - Je pense également qu'il serait grandement préférable qu'à chaque appel de fonction (surtout issue de lib C Sql) il faut récupérer et tester le retour de la fonction (pointeur ou valeur) ce que tu ne fais pas pour la variable "res" (retour de mysql_use_result) que tu passe directement à mysql_fetch_row. Également tester les retour de 'mysql_free_result' et de 'mysql_close' même si moins critique mais évite d'ignorer les fuites mémoires en cas de soucis... Voila, j'espère que ça pourra t'aider un peu. @+ Vincent > > Diffusez cette liste aupres de vos relations :-) Linux Azur : http://www.linux-azur.org Vous etes responsable de vos propos. *** Merci de rediger sans SMS, ni HTML ni PJ ***