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] et connexion a une base MySql en C++


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut [MFC] et connexion a une base MySql en C++
    Bonjour,

    J'ai un ptit problème et je voudrais savoir si quelqu'un pourraît m'éclairer !

    Lors de l'ouverture de mon application MFC, je voudrais que une connexion à la base de données soit réalisé.

    Voici mes questions
    1° comment etre sur que une fois l'application, il n'y ait pas besoin de faire une demande de connexion lors des travaux sur la table

    2° Refermer la connexion lors de la fermeture de l'application. ( pour ca, je pense que c sur mon bouton "quitter" que je doit faire ...)

    Je vous remecie

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    rien compris a la question 1.
    la connexion tu la fermes quand tu veux par exemple dans ExitInstance (classe d'application).

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut
    et bien en fait, je ne voit pas comment faire pour me connecter a la base lors de l'ouverture de l'appli et que la connexion reste pour que les differentes fonctions de mon appli puisse réaliser des requetes sur ma base sans avoir à ce reconnecter à chaque fois ...

    Si t'as un lien pour m'expliquer sa ... parce que la, mon script ne se connecte meme po !

  4. #4
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    C'est une très chouette question.

    Le problème qu'on rencontre souvent est que l'on gère mal une connexion à une base de données. Il y a de ces gens qui sans le savoir ouvre plus d'une dizaine de fois des connexions à leur bd lorsqu'il clique sur des boutons de leurs interfaces. Ne parlons même des appli web. La connexion à la base est réouverte à chaque chargement de la page. Ce qui est grave.
    Lorsque la connexion est ouverte elle doit être précieusement garder et même, elle doit être mise en cache si possible. Avec un développement sous OLE DB, ATL fournit la classe CDataSourceCache dont l'instance de cette classe doit demeurer dans un objet dont sa durée de vie est égale à celle de l'application et particulièrement dans la classe de module pour une dll ATL.
    S'il l'on utilise ODBC avec les MFC. Je personnalise ma classe CDatabase et je le sauvegarde dans l'objet l'application.

    Il est préférable d'ouvrir la connexion le plutôt possible une et une seule fois dans toute l'application dans le InitInstance de l'objet application.
    Et il faut fermer la connexion le plutard possible dans Existance de l'objet application

    Si un recordset qui à besoin de la connexion à ma bd
    je fais simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CRecordset rs;
    rs.m_pDatabase = &myOnlyOneConnectedDatabase;
    // ...

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut
    oula, jai pas tout compris mais bon, c'est possible si je met mon script au dans le InitInstance alors ...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut
    voici le code que j'utilise pour me connectere, por, il ne fonctionne po et la, je comprend pas pourquoi, tout me semble normal !

    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
     
    #include <mysql.h> 
    #include <iostream>
    #define MYSQL_DB "aquarium"
     
    #pragma comment(lib, "libmysql.lib") // libmysql.dll doit etre dans le meme rep.
    using namespace std;
    int main(void)
    {
     MYSQL mysql;
     const char *host  = "127.0.0.1"; // Adresse du serveur MySQL
     const char *user  = "Nelmo"; // Nom d'utilisateur
     const char *pass  = "matrix"; // Mot de passe
     const char *db    = "aquarium"; // Base de donnée
     
     //MYSQL_RES *result;
     
     system("cls");
     
     mysql_init(&mysql);
     //mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"main");
     if (!mysql_real_connect(&mysql,host,user,pass,db,3306,NULL,0)) //connexion
      {
       cout<<"connexion Failed";
       return (0);
            }
            else
      {
       cout<<"connexion reussi";
      }
     
      /*(mysql_select_db(&mysql,MYSQL_DB)) 
      {
                    mysql_close(&mysql);
        system("pause");
            }*/
            mysql_close(&mysql);
      return 0;
    }
    Voila, jespere que vous pourrez m'aider, je suis en train de me ronger la tete ... hihihihi

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

Discussions similaires

  1. erreur connexion a une base mysql
    Par klemellill dans le forum JBuilder
    Réponses: 9
    Dernier message: 03/05/2007, 16h45
  2. connexion a une base mysql : accessed denied
    Par ghita269 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 17/09/2006, 11h01
  3. problème de connexion sur une base mysql
    Par boss_gama dans le forum Installation
    Réponses: 4
    Dernier message: 05/09/2006, 14h13
  4. Voir le nombre de connexion d'une base MYSQL ?
    Par zmania69 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/08/2006, 18h22
  5. Connexion sur une base Mysql distante (non locale)
    Par externa dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/02/2006, 11h34

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