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

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

Votre réponse

15 réponses

Meilleure réponse
Messages postés
179
Date d'inscription
mardi 16 août 2005
Dernière intervention
25 août 2010
18 févr. 2007 à 08:04
3
Merci
Quelle DB ?
Quellle API utilisée ?

Les infos sont minces et cela parait lége comme base de départ.....

Merci cs_vicenzo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_vicenzo
Meilleure réponse
Messages postés
554
Date d'inscription
samedi 6 septembre 2003
Dernière intervention
6 mars 2010
18 févr. 2007 à 08:37
3
Merci
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...

Merci cs_Matt67 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Matt67
Meilleure réponse
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
29 avril 2007
18 févr. 2007 à 12:19
3
Merci
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 .

Merci mamstyle 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de mamstyle
Meilleure réponse
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
18 févr. 2007 à 12:25
3
Merci
ADO : LECTURE DANS TABLEAU (WIN32)
http://www.cppfrance.com/code.aspx?id=23130

ciao...
BruNews, MVP VC++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de BruNews
Meilleure réponse
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
29 avril 2007
18 févr. 2007 à 12:41
3
Merci
en fait j'ai mal expliqué .en fait je veux  recuperer les resultats dans un tableau de chaines de caracteres .

Merci mamstyle 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de mamstyle
Messages postés
23
Date d'inscription
lundi 26 mars 2007
Dernière intervention
29 octobre 2009
3 mai 2007 à 08:20
0
Merci
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
Messages postés
23
Date d'inscription
lundi 26 mars 2007
Dernière intervention
29 octobre 2009
3 mai 2007 à 10:10
0
Merci
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
Messages postés
554
Date d'inscription
samedi 6 septembre 2003
Dernière intervention
6 mars 2010
5 mai 2007 à 07:19
0
Merci
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
Messages postés
23
Date d'inscription
lundi 26 mars 2007
Dernière intervention
29 octobre 2009
5 mai 2007 à 11:28
0
Merci
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
Messages postés
23
Date d'inscription
lundi 26 mars 2007
Dernière intervention
29 octobre 2009
5 mai 2007 à 11:36
0
Merci
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
Messages postés
554
Date d'inscription
samedi 6 septembre 2003
Dernière intervention
6 mars 2010
5 mai 2007 à 15:27
0
Merci
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
Messages postés
23
Date d'inscription
lundi 26 mars 2007
Dernière intervention
29 octobre 2009
7 mai 2007 à 10:29
0
Merci
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
Messages postés
23
Date d'inscription
lundi 26 mars 2007
Dernière intervention
29 octobre 2009
7 mai 2007 à 10:48
0
Merci
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
Messages postés
554
Date d'inscription
samedi 6 septembre 2003
Dernière intervention
6 mars 2010
7 mai 2007 à 19:44
0
Merci
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
Messages postés
23
Date d'inscription
lundi 26 mars 2007
Dernière intervention
29 octobre 2009
8 mai 2007 à 10:38
0
Merci
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.