IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Récupérer données d'une BDD [Base de donnée]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par défaut Récupérer données d'une BDD
    Bonjour,

    Je souhaite effectuer une requête SQL sur une des tables de ma BDD, récupérer les résultats et les afficher dans ma GUI.
    Cependant, je dois avouer que je suis un peu perdu devant le nombre d'objets et de composants mis à disposition par C++ Builder.
    Voici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void __fastcall Database::getID()
    {
       rstmp = new TADODataSet(NULL);
       TADOCommand *req = new TADOCommand(NULL);
     
       openSQLConnections();
     
       req->Connection = cnnSQLBIF;
       req->CommandText = "SELECT ID FROM " + TABLEID;
       req->CommandType = cmdText;
       rstmp->Recordset = req->Execute();
     
       Interface->dataEdit->Text = // ???
    }

    Je ne sais pas si cette façon de procéder est correcte ou optimale. Je souhaiterais maintenant juste récupérer les résultats.
    A noter que cnnSQLBIF est initialisé grâce à openSQLConnections() et que TABLEID est une constante contenant le nom de la table. La connection à la base de donnée fonctionne correctement, je l'ai vérifié.

    Merci d'avance.

    EDIT : j'ai trouvé quelqu'un qui avait un problème tout à fait similaire au mien : http://forums.devshed.com/c-programm...er-320048.html

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 079
    Par défaut
    utilise un TDBGrid connecte le à un TDataSource, ce dernier tu lui affecte à sa propriété DataSet ton rstmp

    les tutoriels ADO pour Delphi sont aussi valable en C++Builder, juste des bidules de syntaxe qui change

    Normalement, un simple TADOQuery peut remplacet ton TADODataSet et TADOCommand, tu n'as pas besoin de manipuler manuellement le recordset sous-jacent !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par défaut
    Merci de répondre à mes questions (toujours les mêmes ^^).

    En fait je me suis mal exprimé, pour des besoins de test, je veux afficher les résultats dans ma GUI mais seulement pour vérifier que ça fonctionne correctement et que le résultat est bien celui attendu.
    Mais en fait, dans le programme que je réalise, je n'aurai jamais à afficher des données dans la GUI, je dois les manipuler "manuellement".
    Donc, en résumé, je veux récupérer les résultats (dans un recordset) et ensuite pouvoir itérer sur chacun des records afin d'en extraire la valeur.

    Peux-tu développer l'idée du TADOQuery ?

  4. #4
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Salut
    pas besoin du composant TAdoCommand prévu pour des modifications en base
    inspire toi de ce qui suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    TADODataSet* rstmp = new TADODataSet(NULL);
       ADOConnection1->Connected=true; // je l'utilise pour l'accès à la base de donnée similaire a ton openSQLConnections();
       rstmp->Connection=ADOConnection1;
       rstmp->CommandText = "SELECT * FROM T_Depense"; // pour utilisation avec une petite base de donnée
       rstmp->CommandType = cmdText;
       rstmp->Active=true;  // excution de la query
       rstmp->First(); // on se prositionne sur le premier record
       rstmp->First();
       AnsiString tmp;
       do
       {
    	 Interface->dataEdit->Text (rstmp->Fields->FieldByName("Id")->AsWideString); // on affiche le premier record Id
    	 rstmp->Next();
       } while (!rstmp->Eof);   while (!rstmp->Recordset->Eof);
       delete rstmp;
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par défaut
    Merci à toi, ça fonctionne très bien !

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 079
    Par défaut
    Il y a plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      TADOQuery* rstmp = new TADOQuery(NULL);
      ADOConnection1->Connected=true; // je l'utilise pour l'accès à la base de donnée similaire a ton openSQLConnections();
       rstmp >Connection = ADOConnection1;
       rstmp->SQL->Text = "SELECT * FROM T_Depense"; // pour utilisation avec une petite base de donnée
       rstmp->Open();
     
       while ( ! rstmp->Eof) // Toujours le faire avant pour protéger d'un ensemble vide !
       {
    	 Interface->dataEdit->Text = rstmp->FieldByName("Id")->AsString; // on affiche le premier record Id
    	 rstmp->Next();
       }
       delete rstmp;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par défaut
    Encore mieux, merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer des données depuis une BDD sur un serveur de mon site web
    Par kookitanou dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 30/10/2012, 10h52
  2. [1.x] Récupérer des données d'une bdd dans une liste déroulante
    Par bMallo dans le forum Symfony
    Réponses: 4
    Dernier message: 02/08/2012, 10h48
  3. [EasyPHP] Récupérer des données sur une BDD externe ?
    Par hisin dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 31/12/2009, 12h39
  4. [MySQL] Récupérer donnée d'une bdd d'un autre serveur
    Par valouche dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/02/2008, 12h01
  5. Réponses: 10
    Dernier message: 02/04/2007, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo