Pb reservation memoire C

dam1234 Messages postés 14 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 20 juillet 2005 - 21 mars 2003 à 08:45
dam1234 Messages postés 14 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 20 juillet 2005 - 30 avril 2003 à 16:46
Salut, g un probleme de reservation d'espace memoire ds mon prog utilisant l api mysql. Enfin je pense que c un pb de reservation car qd j'execute un prog utilisant la methode ci apres, au bout de quelques tours de boucles, des variables sont ecrasees et tout par en Z. QQun connait il la reponse a mes problemes??? merci

int clientsql :: EnvoyerRequeteVisu(historique* tab_res)
{
MYSQL *pConnection ;
MYSQL_RES r;//etrangement necessaire a l'appel des fcts sinon apres
//store_result, pConnection devient nul??????!!!!!!
MYSQL_RES* re ;
MYSQL_ROW row; //declaration en char **
pConnection = mysql_init(NULL);
if (!(mysql_connect(pConnection,HOST,USER,PASSWD)))
{return 0;}

if (mysql_select_db(pConnection,"Acces"))
{return 0;}

if (mysql_query(pConnection,requete))
{return 0;}

if (!(re = mysql_store_result(pConnection)))
{return 0;}

if (re->row_count==0)
{mysql_free_result(re);
mysql_close(pConnection);
return 0;}

unsigned int i=0;

while ((row = mysql_fetch_row(re)))
{
tab_res[i].num = row[0];
tab_res[i].nom = row[1];
tab_res[i].prenom = row[2];
tab_res[i].acces = row[3];
tab_res[i].ouverture = row[4];
i++;
}
mysql_close(pConnection);
mysql_free_result(re);
return 1;
}

7 réponses

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
21 mars 2003 à 09:28
Il y a une erreur dans ta boucle while(), je suppose que nom et prénom sont des chaines de caractères, donc tu ne peux pas les copier comme tu le fais. C'est une erreur classique de débutant en C.

// Faux
tab_res[i].nom = row[1];
tab_res[i].prenom = row[2];

// Juste (si ton tableau de résultat est correctement alloué)
strcpy(tab_res[i].nom, row[1], strlen(row[1]));
strcpy(tab_res[i].nom, row[2], strlen(row[2]));

Pour le reste, c'est-à-dire pour le code en MySQL, il ne doit pas y avoir d'erreurs.

Kaid - kaid.fr.st
0
dam1234 Messages postés 14 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 20 juillet 2005
21 mars 2003 à 13:34
ben en fait, ce sont pas des char*, ce sont des AnsiString donc le pb n'est pas la...
Est ce que le pb ne pourrait il pas venir d'une mauvaise liaison de librairie? ou une mauvaise utilisation de la librairie SQL??
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
21 mars 2003 à 15:29
S'il s'agit d'un problème MySQL, il faut que tu trouves un exemple d'accès à MySQL en C pour voir si tu as fais toutes les bonnes opérations. Testes aussi si les fonctions MySQL te retournent un code d'erreur, il y a une fonction qui permet facilement d'avoir la description d'une erreur.
Voila à part installer MySQL (ce que j'ai pas trop envie de faire), je peux pas t'aider plus.

Kaid - kaid.fr.st
0
dam1234 Messages postés 14 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 20 juillet 2005
21 mars 2003 à 16:40
merci qd meme mais le pb c que par exemple qd je declare une var dynamique MYSQL_RES alors il n'y a pas moyen de me connecter au serveur car la var MYSQL apres le connect se retrouve avec n'importe quoi ds les chps et ca plante. Mais qd je declare MYSQL_RES en statiq alors je me connecet et j'execute des requetes, ca plante au moment de recuperer le resultat mais je vais deja plus loin. Meme avec un exemple de base pas moyen de tout executer correctement je comprends pas, je pense que ca vient de l'utilisation de l'api mais mystere je ne sais plus enfin thanks qd meme encore.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
21 mars 2003 à 16:45
Tu veux dire que même avec un exemple que tu as trouvé qui devrait fonctionner, ca ne fonctionne pas chez toi ?

Kaid - kaid.fr.st
0
cs_paniX Messages postés 5 Date d'inscription lundi 13 mai 2002 Statut Membre Dernière intervention 27 avril 2003
27 avril 2003 à 21:25
Bonjour,

J'utilise Borland C++ 5.02 et j'aimerais concevoir un programme en C/C++ me permettant d'effectuer des requetes sur une base de données MYSQL.

Quelqu'un aurait-il une idée de ce que je dois utiliser?(biblio, fonctions spéciales...)

Merci beaucoup !

niX.
0
dam1234 Messages postés 14 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 20 juillet 2005
30 avril 2003 à 16:46
utilises la librairie libmysql.dll ou .lib downloadable sur mysql.com
0
Rejoignez-nous