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

MFC Discussion :

[MFC] Requete SQL


Sujet :

MFC

  1. #1
    Membre confirmé Avatar de LapinGarou
    Homme Profil pro
    R&D Developer
    Inscrit en
    Octobre 2005
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : R&D Developer
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 341
    Points : 479
    Points
    479
    Par défaut [MFC] Requete SQL
    Bonsoir

    J'ai une base access, et j'utilise une connexion odbc pour l'interroger. Mais comment faire pour lancer une requete SQL (genre afficher tous les noms qui commencent par "B") ? C'est quoi l'histoire des paramètres ?

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Tu utilises un objet d'accès aux données (genre CRecordset) ? il n'y a pas une fonction executeSql ou du genre ?

  3. #3
    Membre confirmé Avatar de LapinGarou
    Homme Profil pro
    R&D Developer
    Inscrit en
    Octobre 2005
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : R&D Developer
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 341
    Points : 479
    Points
    479
    Par défaut
    ExecuteSQL fait partie de la classe CDatabase::ExecuteSQL(LPCSTR lpszSQL );
    Je pige pas comment ça peut m'aider, désolé. J'utilise bien des objets du type CRecordSet, mais la seule fonction que j'ai trouvée ne me sert pas à grand chose : ExecuteUpdateSQL(void); et comme elle ne prend aucun argument, je sèche.

    Pour me connecter, j'ai fait comme ça :
    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
     
    	CDatabase mydb;
     
    	if( !mydb.OpenEx( _T("DSN=CliAlu;DBQ=C:\\CliAlu\\DataBase CliAlu\\CliAlu.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;")))
    	{
    		AfxMessageBox("Impossible d'ouvrir la base de données");
    		return 0;
    	}
    	/*else  
    	{
    		AfxMessageBox("Test d'ouverture réussi");
    		//mydb.ExecuteSQL("mettre la requete de recherche ici");
    	}*/
     
    	CCliAluSet r(&mydb);
    est-ce que ça marcherai si je mettai la requete dans mon bloc "else" ? Vu que ça doit être une recherche, je pense que ce n'est pas à la connexion qu'il faut faire la requête ?

  4. #4
    Membre habitué Avatar de GP77
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 131
    Points
    131
    Par défaut
    Tu executes ton query via un objet CDatabase comme tu le fais.
    Et puis grace à ton CRecordset tu récupères les valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CDatabase ds;
    CRecordset rs(&ds);
    DBVariant dbv;
    CString  strSQL _T("Ton query");
    ds.open(...);
    rs.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL, CRecordset::readOnly | CRecordset::executeDirect);
    while(!rs.IsEOF())
    {
       rs.GetFieldValue(short(0),dbv);
    }
     
    Et le tour est joué!

  5. #5
    Membre confirmé Avatar de LapinGarou
    Homme Profil pro
    R&D Developer
    Inscrit en
    Octobre 2005
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : R&D Developer
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 341
    Points : 479
    Points
    479
    Par défaut
    OK. Hier j'ai trouvé une autre méthode je pense, d'arriver au même résultat je ne suis pas sûr : le membre m_strFilter équivaudrait à une clause WHERE. J'ai trouvé ça sur le site de microsoft, les deux méthodes sont elles les mêmes ? ou bien celle de GP77 permet plus de choses ? (c'est juste à titre perso cette question)

  6. #6
    Membre habitué Avatar de GP77
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 131
    Points
    131
    Par défaut
    Tu peux faire les deux, c'est à dire que tu peux faire ton query via un CDatabase, avec un m_strFilter et puis associer un CRecordSet pour récupérer les valeurs.
    Parce que sans CRecordset, je ne vois pas très bien comment tu vas récuupérer tes résultat pour les mettres dans ton control...

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2007, 17h04
  2. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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