Pb reservation memoire C

Signaler
Messages postés
14
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
20 juillet 2005
-
Messages postés
14
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
20 juillet 2005
-
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

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

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
Messages postés
14
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
20 juillet 2005

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??
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

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
Messages postés
14
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
20 juillet 2005

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.
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

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
Messages postés
5
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
27 avril 2003

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.
Messages postés
14
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
20 juillet 2005

utilises la librairie libmysql.dll ou .lib downloadable sur mysql.com