mamstyle
Messages postés6Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention29 avril 2007
-
17 févr. 2007 à 23:19
ezneti
Messages postés23Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention29 octobre 2009
-
8 mai 2007 à 10:38
Bonsoir, je travaille en ce moment sur un projet et j'utilise la MFC sous Visual Studio .Mon but est d'aller dans la base de données et de recuperer les resultats d'une requete sql (select codebarre from entreprise )dans un tableau en c++.si qq'un peut m'aider ça sera très gentil merci .
cs_Matt67
Messages postés549Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention 6 mars 20103 18 févr. 2007 à 08:37
Bonjour,
c'est du C mais pour le C++, tu remplace le calloc par new et tout et tout ...
pour recupere un id et un nom :
(ATTENTION LE RETOUR DES FONCTIONS NE SONT PAS TESTES, IL FAUT LE FAIRE)
/* a declarer dans un .h */
une structure pour stocker le resultat
struct s_resultat
{
unsigned long id;
char nom[255];
}
/* recup des resultats */
struct s_resultat* recupData(MYSQL *pMySql, int pNbRecord)
{
MYSQL_RES *pRes = NULL;
MYSQL_ROW row;
char *pRequete = "SELECT id, nom FROM table ORDER BY nom";
struct s_resultat *pResultat = NULL;
/* execution de la requete, retour a tester*/
mysql_query(pRequte, pMySQL);
/* recuperation du jeu d'enregistrement, a tester */
pRes = mysql_store_result(pMySql);
/* nombre d'enregistrement (a retourner pour savoir la taille du tableau) */
numRecord = pRes->row_count();
/* allocation memoire pour le tableau, retour du malloc a tester */
pResultat = (struct _resultat_*)calloc(numRecord, sizeof(struct _resultat_
/* on recupere les datas */
i = 0;
while(row = mysql_fetch_row(pRes))
{
pResultat[i].id = strtoul(row[0]?row[0]:"0", NULL, 10);
strcpy(pResultat[i].nom, row[1]?row[1]:"");
i++
}
/* liberation de la memoire */
mysql_free_result(pRes);
pRes = NULL;
/* et on retourne le resultat (il faudrait liberer pResultat, quand on aura fini avec lui) */
return pResultat;
}
Pas Testé, Pas Compilé donc il peut y avoir des erreurs...
mamstyle
Messages postés6Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention29 avril 2007 18 févr. 2007 à 12:19
merci bcp pour le code .je vais tester ce code pour voir si ça marche .au fait mon but :c'est de comparer un champ d'une table de ma base de donnée(stocké dans un tableau) avec un autre tableau .
ezneti
Messages postés23Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention29 octobre 2009 3 mai 2007 à 08:20
bonjour,
j'ai établit la connexion avec une base de données mysql en c++.
j'arrive pas à recupérer le resultat d'un select dont plusieurs champs figurent.
j'ai essayer ce code aprés qq modifications pas des erreurs de compilation ni d'execution mais j'arrive pas à récupérer le bon résultat dans un tableau de char.
personne c comment faire merci
ezneti
Messages postés23Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention29 octobre 2009 5 mai 2007 à 11:28
merci pour la reponse,
jarrive à recuperer le resultat mais il reste un problème des requetes de mise à jour "update" ils ne sont pas prise en compte dans le programme
ezneti
Messages postés23Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention29 octobre 2009 5 mai 2007 à 11:36
pour expliquer plus j'affiche le resultat et tout est bon puis j'applique une requete update puis le même affichage des faux resultats sont affichés
je verifie avec les mêmes requetes dans mysql les resultats ne resemblent pas je trouve pas ou est le problème dans mon code
cs_Matt67
Messages postés549Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention 6 mars 20103 5 mai 2007 à 15:27
Est ce que tu peux poster le code de ta requete de select ainsi que le code de ta requete update ou bien (mieux) peux tu mettre un lien où l'on peut voir le code entier (ou la partie où il y a des soucis)
ezneti
Messages postés23Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention29 octobre 2009 7 mai 2007 à 10:29
bonjour,
j'ai defini une methode pour récupérer les données de mes tables dont le type de retour est float* puisque les champs de mes tables sont de type float tout va bien.
j'utilise l'appel de cette methode dans plusieurs autres methodes de calcul qui sont nécessaire pour mon programme. Lors du test je fait appel à ces methodes la première itération passe bien et puis un debogage se lance je pense que c'est un problème de mémoir.
voici le code de récuperation de données:
ezneti
Messages postés23Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention29 octobre 2009 7 mai 2007 à 10:48
est ce que tu travailles avec la connexion via ODBC ou avec les fichiers include de mysql et c++.
j'ai pas trouvé un code de connexion via ODBC peut être c'est meilleur?ou la même chose?
merci de me répondre
cs_Matt67
Messages postés549Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention 6 mars 20103 7 mai 2007 à 19:44
Bonsoir,
1er point : controle le retour de la fonction mysql_query et aussi du new.
2eme point : regarde si tu as des enregistrements (row_count). Si c'est égal à 0, ce n'est pas la peine d'aller plus loin.
3eme point : le delete de pResultat, tu ne dois pas le faire dans la fonction mais quand tu ne te sers plus de pResultat (descructeur par exemple), de toute façon, ou il est placé, il ne sert a rien.
Pour ma part, ODBC, je ne connais pas donc je n'utilise pas !!!
ezneti
Messages postés23Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention29 octobre 2009 8 mai 2007 à 10:38
merci Matt67
je trouve pas de problème au niveau de cette methode je pense que c'est un problème de transaction puisque la première itération marche bien mais au niveau de la deuxième il y a debogage
et si je fais la première itération tout est bon pui j'execute une deuxième fois la deuxième itération se fait correctement.