Stocker le resultat d'une requete sql en c++ dans un tableau [Résolu]

mamstyle 6 Messages postés lundi 22 janvier 2007Date d'inscription 29 avril 2007 Dernière intervention - 17 févr. 2007 à 23:19 - Dernière réponse : ezneti 23 Messages postés lundi 26 mars 2007Date d'inscription 29 octobre 2009 Dernière intervention
- 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 .
Afficher la suite 

15 réponses

Répondre au sujet
cs_vicenzo 179 Messages postés mardi 16 août 2005Date d'inscription 25 août 2010 Dernière intervention - 18 févr. 2007 à 08:04
+3
Utile
Quelle DB ?
Quellle API utilisée ?

Les infos sont minces et cela parait lége comme base de départ.....
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_vicenzo
cs_Matt67 554 Messages postés samedi 6 septembre 2003Date d'inscription 6 mars 2010 Dernière intervention - 18 févr. 2007 à 08:37
+3
Utile
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...

Matt...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Matt67
mamstyle 6 Messages postés lundi 22 janvier 2007Date d'inscription 29 avril 2007 Dernière intervention - 18 févr. 2007 à 12:19
+3
Utile
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 .
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mamstyle
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 18 févr. 2007 à 12:25
+3
Utile
ADO : LECTURE DANS TABLEAU (WIN32)
http://www.cppfrance.com/code.aspx?id=23130

ciao...
BruNews, MVP VC++
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de BruNews
mamstyle 6 Messages postés lundi 22 janvier 2007Date d'inscription 29 avril 2007 Dernière intervention - 18 févr. 2007 à 12:41
+3
Utile
en fait j'ai mal expliqué .en fait je veux  recuperer les resultats dans un tableau de chaines de caracteres .
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mamstyle
ezneti 23 Messages postés lundi 26 mars 2007Date d'inscription 29 octobre 2009 Dernière intervention - 3 mai 2007 à 08:20
0
Utile
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
Commenter la réponse de ezneti
ezneti 23 Messages postés lundi 26 mars 2007Date d'inscription 29 octobre 2009 Dernière intervention - 3 mai 2007 à 10:10
0
Utile
j'ai pas compris
* 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++
}
Commenter la réponse de ezneti
cs_Matt67 554 Messages postés samedi 6 septembre 2003Date d'inscription 6 mars 2010 Dernière intervention - 5 mai 2007 à 07:19
0
Utile
Bonjour,

    Il faut d'abord que tu verifies que tu n'as pas d'erreur en testant le retour des fonctions tel que mysql_query(pRequte, pMySQL);

    Ensuite, verifies que tu as bien des données : numRecord = pRes->row_count();. Il faut que tu tests numRecord pour voir s'il est != 0

     Si tu n'arrives pas à recupere le bon resultat dans ton tableau de char, peut-être que ta requete n'est pas bonne.

Matt...
Commenter la réponse de cs_Matt67
ezneti 23 Messages postés lundi 26 mars 2007Date d'inscription 29 octobre 2009 Dernière intervention - 5 mai 2007 à 11:28
0
Utile
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
Commenter la réponse de ezneti
ezneti 23 Messages postés lundi 26 mars 2007Date d'inscription 29 octobre 2009 Dernière intervention - 5 mai 2007 à 11:36
0
Utile
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
Commenter la réponse de ezneti
cs_Matt67 554 Messages postés samedi 6 septembre 2003Date d'inscription 6 mars 2010 Dernière intervention - 5 mai 2007 à 15:27
0
Utile
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)

Matt...
Commenter la réponse de cs_Matt67
ezneti 23 Messages postés lundi 26 mars 2007Date d'inscription 29 octobre 2009 Dernière intervention - 7 mai 2007 à 10:29
0
Utile
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:


float* recupData(char* requete)
{
MYSQL_RES *pRes = NULL;
MYSQL_ROW row;
mysql_query(Requte, pMySQL);
pRes = mysql_store_result(pMySql);
numRecord = pRes->row_count();
float *pResultat =new float[numRecord];
i = 0;
while(row = mysql_fetch_row(pRes))
{
pResultat[i] = atof(row[0]?row[0]:"0", NULL, 10);
i++
}

mysql_free_result(pRes);
pRes = NULL;
return pResultat;
delete []peRsultat
}
Commenter la réponse de ezneti
ezneti 23 Messages postés lundi 26 mars 2007Date d'inscription 29 octobre 2009 Dernière intervention - 7 mai 2007 à 10:48
0
Utile
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
Commenter la réponse de ezneti
cs_Matt67 554 Messages postés samedi 6 septembre 2003Date d'inscription 6 mars 2010 Dernière intervention - 7 mai 2007 à 19:44
0
Utile
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 !!!

Matt...
Commenter la réponse de cs_Matt67
ezneti 23 Messages postés lundi 26 mars 2007Date d'inscription 29 octobre 2009 Dernière intervention - 8 mai 2007 à 10:38
0
Utile
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.
Commenter la réponse de ezneti

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.