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

wxWidgets Discussion :

connexion base de données avec wxwidgets


Sujet :

wxWidgets

  1. #1
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut connexion base de données avec wxwidgets
    Bonjour,
    Help !!!!
    Je bloque depuis deux jours sur ce pb:
    J'ai installé wamp sur windows XP, avec serveur MySQL.
    Tout marche, je crée des bases de données avec PhpMyadmin, et je peux faire ce que je veux avec (sous phpmyadmin).
    J'accède avec id= "root" et sans mot de passe.
    Je veux maintenant accéder à une base de nom "guitshopc" dans un programme C++.
    Rien que de très normal. J'ai donc installé la dernière version de myODBC, puis j'ai créé une source de données de même nom avec le pilote fourni. Sous windows, le test est positif "connexion réussie".
    Voici le morceau de code qui est censé me permettre d'accéder à la base.
    Aucun pb pour le constructeur des objets wxDbConnectInf et wxDB, mais l'ouverture est impossible.
    Par ailleurs, si je mets n'importe quoi dans le constructeur de wxDbConnectInf (un DSN inexistant) le résultat est le même, aucune exception n'est levée
    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
    #include "Projet1App.h"
    #include "Projet1Dlg.h"
    #include <wx/db.h>
    #include <wx/string.h>
     
     
    wxDbConnectInf *DbConnectInf;
    wxDb* sampleDB;
     
     
    IMPLEMENT_APP(Projet1DlgApp)
     
    void connect ()
    {
     
        DbConnectInf= new wxDbConnectInf(NULL,"guitshopc","root","");
        sampleDB= new wxDb(DbConnectInf->GetHenv());
        bool test =sampleDB->Open(DbConnectInf);
        if(!test)
        wxMessageBox("SORRY!","ECHEC OUVERTURE", wxOK );
    }
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Je sais pas si ça peut t'aider mais on ne sait jamais :

    http://www.wxwidgets.org/manuals/2.6...l#odbcoverview

  3. #3
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Merci beaucoup, mais j'avais lu tout ça avant mes premiers essais.
    Pour le moment je n'avance pas.
    Le pb est que le constructeur de wxConnectInf ne bronche pas quand on lui refile n'importe quoi comme source de données.
    Il devrait lever une exception, mais dans tous les cas il génère un Handle, de sorte qu'on ne peut pas situer le Pb.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  4. #4
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Salut à tous, je me permet de poster ici car apparemment le même problème.

    Je veux me connecter à une base MySQL via wxWidgets.

    Or en suivant les indications donné par l'aide je n'est rien qui fonctionne.
    La méthode Open me renvoi false!!!

    Voici mon code:
    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
     
    void CUtils::ConnectToDataBase()
    {
    	wxDbConnectInf *connect = new wxDbConnectInf(NULL, wxT("ASD-PARI-02"), \
    		wxT("nico_pfe_db_adm"), wxT("nico_pfe_db_passwd"));
    	if(!connect || !connect->GetHenv())
    	{
    		CUtils::HandleError(wxT("DB ENV ERROR: cannot allocate ODBC env handla\n"));
    	}
     
    	wxDb *pDb = new wxDb(connect->GetHenv());
    	if(!pDb)
    	{
    		CUtils::HandleError(wxT("CONNECTION ERROR : cannot get DB connection!\n"));
    		return;
    	}
     
    	if(!pDb->Open(connect))
    	{
    		CUtils::HandleError(wxT("CONNECTION ERROR : cannot open DB connection!\n"));
    		return;
    	}
     
     
    	if(pDb->Dbms() == dbmsMY_SQL)
    	{
    		CUtils::HandleError(wxT("MY-SQL!!!"));
    	}
    }
     
     
    void CUtils::HandleError(wxString errmsg, wxDb *pDB)
    {
    	wxString allerrors;
    	if(pDB != NULL)
    	{
    		allerrors = wxDbLogExtendedErrorMsg(errmsg.c_str(), pDB, NULL, NULL);
    	}
    	else
    	{
    		allerrors = errmsg;
    	}
    	wxMessageBox(allerrors,	"ERROR", wxOK | wxICON_EXCLAMATION);
    }
    Merci de votre aide, car cela 3 jours que je planche là-dessus.

  5. #5
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Pas trouvé de solution, ni de réponse. De guerre lasse j'ai laissé tomber C++ pour passer à Python et les wxwidgets avec le portage wxpython et le module de connexion MySQLdb.
    Et alors là les choses sont simples et limpides.
    Par ailleurs, pas besoin de créer une DSN, la solution est donc 'windows free', elle permet en outre d'accéder aux bases distantes avec une adresse Internet.
    Rien que du bonheur ...
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  6. #6
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Mouais, mais je ne peux pas opter pour cette solution.

    Mon appli doit être en C++, et le source compatible avec avec plusieurs OS.
    De plus la SGBD peut être amenée à changer.

    Au niveau de ma config su setup.h j'ai mise ceci:

    wxUSE_ODBC 1
    wxODBC_FWD_ONLY_CURSORS 1
    wxODBC_BACKWARD_COMPATIBILITY 0

    C'est bon ? Sachant que je développe sous windows.


    Cathar.

  7. #7
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    ... passer à Python et les wxwidgets avec le portage wxpython et le module de connexion MySQLdb.
    Comme il s'agit d'un portage, ne pourrait-on pas regarder un peu plus dans les entrailles pour voir ce qui change exactement entre les deux versions pour comprendre pourquoi ça ne fonctionne pas en c++ ? (Il doit y avoir des choses qui sont faites en plus ou en moins sur la version python contrairement à la version C++)

  8. #8
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Je pense avoir trouvé, j'ai exécuté le programme de Demo Dbbrowser, il liste l'ensemble des types de bases de données disponibles. Hors Je n'ai que 4 types de disponible. Logiquement il va chercher les infos dans le ODBC.ini. J'y ai jeté un coup d'oeil, les drivers ODBC pour MySQL et PostgreSQL n'y figure pas.

    Ce qui est mal heureux, c'est qu'en les rajoutant à la main, ça ne marche pas. Il doit y avoir une façon de les rajouter?

    Cathar.

Discussions similaires

  1. Connexion base de donnée avec un code C#
    Par yochima dans le forum C#
    Réponses: 12
    Dernier message: 20/05/2017, 19h12
  2. Réponses: 2
    Dernier message: 24/03/2010, 11h37
  3. Création d'une base de données avec wxWidgets
    Par solp dans le forum wxWidgets
    Réponses: 2
    Dernier message: 23/08/2006, 09h25
  4. creer connexion base de donné avec dbedit eclipse
    Par youcef81 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 22/07/2006, 17h37
  5. Base de donnée avec WxWidgets
    Par PMLinux dans le forum wxWidgets
    Réponses: 8
    Dernier message: 23/03/2006, 07h41

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