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

Visual C++ Discussion :

Utilisation d'une base de donnée


Sujet :

Visual C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut Utilisation d'une base de donnée
    Bonjour,

    J'ai un projet MFC sous visual studio 2005, dans lequel je voudrais utiliser une base de donnée, dans laquelle je pourrais lire et écrire.

    Je pensais utiliser une base de donnée access (mais elle n'est pas encore créée, donc je peux changer si besoin).

    J'ai fait "projet/Ajouter une classe", puis j'ai choisi consommateur ODBC MFC.

    J'ai ensuite choisi la source de donnée machine MS Access database, puis choisi une base de donnée de test que j'ai créé avec access, et qui ne contient qu'une seule table. Je n'ai pas mis de mot de passe et de nom de connection.

    J'ai choisi l'option Dynaset, et décoché l'option "Lier toutes les colonnes".

    Dans le fichier .h généré, j'ai une fonction GetDefaultConnect(); qui semble permettre la connection à la base de donnée, et que j'essaye d'appeler dans mon programme, après avoir inclu ce fichier.h

    Lors de la compilation, j'obtiens l'erreur suivante :
    1>c:\documents and settings\sylvain\bureau\pair\projet\test\test\testdlg.cpp(99) : error C3861: 'GetDefaultConnect' : identificateur introuvable
    Je n'ai pas choisi de prise en charge des bases de données au moment de la création, car je n'avais pas prévu d'en utiliser au départ. De plus, il s'agit d'un projet de type boite de dialogue, qui ne propose pas cette option, peut être que ça vient de là...

    Quelqu'un peut m'aider à faire fonctionner cette fonction, ou à gérer la base de donnée différement?

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    En fait, je viens de me rendre compte que mon appel de la fonction n'était pas bon :
    J'appelle maintenant cette fonction avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CRandom::GetDefaultConnect();
    (Random étant le nom de ma table dans la base de donnée, dans lequel je voudrais stocker des nombres aléatoires)

    J'ai maintenant :
    1>c:\documents and settings\sylvain\bureau\pair\projet\test\test\testdlg.cpp(99) : error C2352: 'CRandom::GetDefaultConnect' : appel non conforme d'une fonction membre non static
    Je ne sais pas vraiment comment utiliser des classes (je débute, et pour le moment, je me contente d'utiliser des fonctions présentes dans le fichier dans lequel je code).

    Je vous laisse le code généré automatiquement :

    Random.h :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    // Random.h : déclaration de CRandom
     
    #pragma once
     
    // code généré activé jeudi 15 mai 2008, 16:47
     
    class CRandom : public CRecordset
    {
    public:
    	CRandom(CDatabase* pDatabase = NULL);
    	DECLARE_DYNAMIC(CRandom)
     
    // Données Champ/Paramètre
     
    // Les types de chaînes ci-dessous (s'ils existent) reflètent le type de données réel du
    // champ de la base de données - CStringA pour les types de données ANSI et CStringW pour les types de données
    // Unicode. Cela empêche le pilote ODBC d'exécuter des conversions
    // superflues éventuelles.  Si vous le souhaitez, vous pouvez remplacer ces membres
    // par des types CString et le pilote ODBC effectuera toutes les conversions nécessaires.
    // (Remarque : Vous devez utiliser une la version 3.5 du pilote ODBC ou une version ultérieure
    // pour prendre en charge à la fois Unicode et ces conversions.)
     
     
    // Substitutions
    	// L'Assistant a généré des substitutions de fonctions virtuelles
    	public:
    	virtual CString GetDefaultConnect();	// Chaîne de connexion par défaut
     
    	virtual CString GetDefaultSQL(); 	// SQL par défaut pour Recordset
    	virtual void DoFieldExchange(CFieldExchange* pFX);	// Prise en charge RFX
     
    // Implémentation
    #ifdef _DEBUG
    	virtual void AssertValid() const;
    	virtual void Dump(CDumpContext& dc) const;
    #endif
     
    };
    Random.cpp :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    // Random.h : implémentation de la classe CRandom
     
     
     
    // Implémentation CRandom
     
    // code généré activé jeudi 15 mai 2008, 16:47
     
    #include "stdafx.h"
    #include "Random.h"
     
    /*** Lignes ajoutées après avoir observé la structure du même fichier dans un projet MFC avec une BDD déclarée dés le départ ***/
    #include "test.h"          //Nom de mon projet
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    /************************************************************************************************************/
     
    IMPLEMENT_DYNAMIC(CRandom, CRecordset)
     
    CRandom::CRandom(CDatabase* pdb)
    	: CRecordset(pdb)
    {
    	m_nFields = 0;
    	m_nDefaultType = dynaset;
    }
     
    CString CRandom::GetDefaultConnect()
    {
    	return _T("DSN=MS Access Database;DBQ=C:\\Documents and Settings\\Sylvain\\Bureau\\PAIR\\Projet\\test\\test.mdb;DefaultDir=C:\\Documents and Settings\\Sylvain\\Bureau\\PAIR\\Projet\\test;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;");
    }
     
    CString CRandom::GetDefaultSQL()
    {
    	return _T("");
    }
     
    void CRandom::DoFieldExchange(CFieldExchange* pFX)
    {
    	pFX->SetFieldType(CFieldExchange::outputColumn);
    // Des macros telles que RFX_Text() et RFX_Int() dépendent du
    // type de la variable membre, et non du type de champ dans la base de données.
    // ODBC tente de convertir automatiquement la valeur de la colonne afin qu'elle soit du type demandé
     
    }
    /////////////////////////////////////////////////////////////////////////////
    // CRandom diagnostics
     
    #ifdef _DEBUG
    void CRandom::AssertValid() const
    {
    	CRecordset::AssertValid();
    }
     
    void CRandom::Dump(CDumpContext& dc) const
    {
    	CRecordset::Dump(dc);
    }
    #endif //_DEBUG
    Merci d'avance

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Je viens de voir qu'il était possible de se connecter à une base de donnée à partir de Visual Studio, par la commande Outil/Se connecter à la base de donnée

    La connexion fonctionne, par contre, je ne vois pas comment lancer cette connexion par le programme, puis faire de requêtes.

    Est ce que quelqu'un a déjà utilisé ça, et pourrait m'expliquer?
    (Je suis pas sûr que ça soit vraiment prévu pour y accéder ensuite par le programme, mais sinon, je ne vois pas l'utilité).
    Merci

  4. #4
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Citation Envoyé par CyberSlan Voir le message
    J'ai un projet MFC sous visual studio 2005, dans lequel je voudrais utiliser une base de donnée, dans laquelle je pourrais lire et écrire.
    Jette un oeil dans la FAQ à cette entrée et les suivantes.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    OK, merci pour le lien , je regarde ça dans la journée

Discussions similaires

  1. [ODBC] Utilisation d'une base de données Microsoft Works en PHP, possible ?
    Par pikatshu dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/04/2007, 08h39
  2. [JGuard] Utilisation d'une base de donnée
    Par worldchampion57 dans le forum Sécurité
    Réponses: 3
    Dernier message: 09/06/2006, 00h38
  3. [VS2005]Utilisation d'une base de données avec VB 2005
    Par gabrielgarcin dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/02/2006, 15h46
  4. Réponses: 5
    Dernier message: 13/12/2005, 16h04
  5. Utilisation d'une base de données a distance
    Par newbie57 dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/10/2005, 09h25

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