Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : pb reservation memoire C [ Archives / Au secours ] (dam1234)

vendredi 21 mars 2003 à 08:45:41 | pb reservation memoire C

dam1234

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;
}

vendredi 21 mars 2003 à 09:28:18 | Re : pb reservation memoire C

Kaid


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

-------------------------------
Réponse au message :
-------------------------------

> 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;
> }
>

vendredi 21 mars 2003 à 13:34:10 | Re : pb reservation memoire C

dam1234

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??




-------------------------------
Réponse au message :
-------------------------------

>
> 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
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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;
> > }
> >
>

vendredi 21 mars 2003 à 15:29:51 | Re : pb reservation memoire C

Kaid


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

-------------------------------
Réponse au message :
-------------------------------

> 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??
>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> > 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
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > 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;
> > > }
> > >
> >
>

vendredi 21 mars 2003 à 16:40:04 | Re : pb reservation memoire C

dam1234

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.



-------------------------------
Réponse au message :
-------------------------------

> 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??
>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> > 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
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > 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;
> > > }
> > >
> >
>

vendredi 21 mars 2003 à 16:45:15 | Re : pb reservation memoire C

Kaid


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

-------------------------------
Réponse au message :
-------------------------------

> 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.
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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??
> >
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > >
> > > 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
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > 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;
> > > > }
> > > >
> > >
> >
>

dimanche 27 avril 2003 à 21:25:16 | Re : pb reservation memoire C

paniX

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.

mercredi 30 avril 2003 à 16:46:49 | Re : pb reservation memoire C

dam1234

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



-------------------------------
Réponse au message :
-------------------------------

> 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.



Cette discussion est classé dans : mysql, tab, row, res, pconnection


Répondre à ce message

Sujets en rapport avec ce message

C++ Libération mémoire pour MySql [ par Spiffou ] Bonjour à tous,j'ai quelques petites questions à poser à propos de la gestion de mémoire lorsque l'on utilise MySql avec du C++.je suis actuellement à déconnexion ou erreur de programmation ? [ par majong ] Bonjour, lorsque j'effectue ces deux requetes, le log me dit que la première est ok mais la 2° à échoué (requete echou 2).J'appelle la même requete po Retour MySQL [ par Xantra ] Bonjour,J'ai un petit problème avec le code suivant :#include #include #include #include int main(){    int var;    MYSQ API MySQL - Eviter plusieurs connexions pour la lecture et la mise à jour de lignes. [ par Fran6web ] Bonjour à tous,J'ai actuellement pas un problème qui me bloque mais tout simplement une question d'optimisation.Lorsque je fais while(row = mysql_fetc demande d'aide [ par sacool2008 ] Samuel assale Abidjan côte d'Ivoirebonjour cher membre j'ai un problème,je viens de réaliser un script php pour faire un affichage lorsque l'internaut Accès base de données mysql en c / linux [ par Susherone ] bonjour a toutes le personnes qui passeront par ici, voila mon pb, j'essai de créer un pti programme qui accède a une base de donnée mysql et qui en r [Linker error] MySql [ par Tidam ] Bonjour a tous voila mon probleme : .  [Linker error] undefined reference to `mysql_connect' .  [Linker error] undefined reference to `mysql_select_ connexion distante base de données MySql en c / linux [ par Susherone ] Programme qui se connecte à partir d'un poste distant sous linux à un serveur mysql tournant sous windows. Testé et fonctionne très bien !compilation pbm d'affichage aprés une requete SELECT [ par goueg83460 ] bonjour je kance une requete SELECT... et lorque je veut récuperer le contenu des champs il y a un problème. Je n'arrive pas a trouver umoyen de les f


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.