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 :

Erreur Avec API MYSQL


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Erreur Avec API MYSQL
    Bonsoir,

    Je souhaite utiliser l'API MySQL au sein de C++ Builder7. J'ai donc suivi le tutoriel (très bien fait d'ailleurs) de LFE.

    Cependant, lors de la compilation, j'ai l'erreur suivante :

    "[BCC32 Erreur] my_list.h(30): E2015 Ambiguïté entre 'LIST' et 'Bde::LIST'".

    Avez-vous déjà eu cette erreur et comment la corriger ?

    Merci de vos réponses.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    salut

    postes ton code stp

    on y verrait un peu plus clair

  3. #3
    Membre régulier Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 104
    Points
    104
    Par défaut
    Salut,

    J'ai déja eu cette erreur avec cette API. Le moyen simple de la résoudre est de remplacer dans tout les fichiers MySql LIST par MYSQLLIST, ou un autre nom qui te plait.

    A+

  4. #4
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Comme l'erreur l'indique, il y a ambigüité dans le nom de la classe car il y en a plusieurs du même nom qui existe dans plusieurs unités.

    Pour résoudre le problème il suffit d'ajouter avant le nom de l'unité.

    Par exemple il y a la même erreur en déclarant :

    pour le résoudre il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics::TBitmap * bmp ;
    Donc il faut que tu spécifie avant List laquelle tu souhaite utiliser.
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Le problème vient du fichier my_list.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
    39
    40
    41
    42
    43
    44
    45
    46
     
    /* Copyright (C) 2000 MySQL AB
     
       This program is free software; you can redistribute it and/or modify
       it under the terms of the GNU General Public License as published by
       the Free Software Foundation; version 2 of the License.
     
       This program is distributed in the hope that it will be useful,
       but WITHOUT ANY WARRANTY; without even the implied warranty of
       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       GNU General Public License for more details.
     
       You should have received a copy of the GNU General Public License
       along with this program; if not, write to the Free Software
       Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
     
    #ifndef _list_h_
    #define _list_h_
     
    #ifdef	__cplusplus
    extern "C" {
    #endif
     
    typedef struct st_list {
      struct st_list *prev,*next;
      void *data;
    } LIST;
     
    typedef int (*list_walk_action)(void *,void *);
     
    extern LIST *list_add(LIST *root,LIST *element);
    extern LIST *list_delete(LIST *root,LIST *element);
    extern LIST *list_cons(void *data,LIST *root);
    extern LIST *list_reverse(LIST *root);
    extern void list_free(LIST *root,unsigned int free_data);
    extern unsigned int list_length(LIST *);
    extern int list_walk(LIST *,list_walk_action action,unsigned char * argument);
     
    #define list_rest(a) ((a)->next)
    #define list_push(a,b) (a)=list_cons((b),(a))
    #define list_pop(A) {LIST *old=(A); (A)=list_delete(old,old) ; my_free((unsigned char *) old,MYF(MY_FAE)); }
     
    #ifdef	__cplusplus
    }
    #endif
    #endif
    L'erreur se produit à la ligne : "extern LIST *list_add(LIST *root,LIST *element);"

    Voilà ... Que dois-je rajouter ?

    Merci de vos réponses.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Problème d'exécution avec API MySQL
    Voilà, j'ai tenté d'utiliser l'API Mysql mais c++ builder me renvoie l'erreur suivante :

    "Le projet EssaiBase.exe a déclenché la classe d'exception EAccessViolation avec le message "Violation d'acces à l'adresse 10003D74 dans le module "LIBMYSQL.DLL". Lecture de l'adresse 00000280.

    Voilà le code de mon unité :

    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "UnitPrincipale.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    #define __WIN__
    #include "mysql.h"
    TForm1 *Form1;
    MYSQL *MySQL;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Panel1->Caption="En cours de Connection";
    MySQL = mysql_init(NULL);
    if (!mysql_real_connect(MySQL,"######","######","######",
    						"######",0,NULL,0))
    			   {
    			   Panel1->Caption="Non Connecté ...";
    			   }
    			   else { Panel1->Caption="Connecté ..."; }
    }
    //---------------------------------------------------------------------------
    J'ai caché les noms d'utilisateurs et mots de passes

    Merci de votre aide.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    as tu inclu le .lib au projet?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Exception
    Oui j'ai intégré la "lib" ...

    Ca ne marche toujours pas ...

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Tu te connectes sur quelle base de données ?

    Si c est une base hebergée par un fournisseur d acces , genre free , c est normal , ils n autorisent pas ce genre de connexion ...


    Sinon penses tu à inclure
    #include <windows.h>

    avant tous les autres , ce qui ne me semble pas etre le cas ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Toujours pas ...
    J'ai ajouté " #include <windows.h> " mais cela ne règle pas le problème.
    Et ma base est hébergée chez PHP.NET qui n'est pas un fournisseur d'accès et qui donne la possibilité d'accéder à la base "extérieurement".

    Quelqu'un a une idée ... ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    sinon la grosse erreur classique , j espere que c est çà , le port !!!

    essayes 80 .

    if (!mysql_real_connect(mySQL, Mon_ip.c_str() , Mon_user.c_str(), Mon_pass.c_str() ,Ma_base.c_str(), Mon_port.c_str(), , NULL, 0))


    sinon windows.h est à inclure avant tout autre chose

    j ai des projets qui plantaient à cause de çà

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par cedni Voir le message
    sinon la grosse erreur classique , j espere que c est çà , le port !!!

    essayes 80 .

    if (!mysql_real_connect(mySQL, Mon_ip.c_str() , Mon_user.c_str(), Mon_pass.c_str() ,Ma_base.c_str(), Mon_port.c_str(), , NULL, 0))


    sinon windows.h est à inclure avant tout autre chose

    j ai des projets qui plantaient à cause de çà
    tout a fait daccord avec toi cedni , jai deja eu cette erreur aussi

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Toujours la même Erreur
    Merci pour votre aide. J'ai suivi vos conseils (windows.h en premier et changement de port) mais j'ai toujours la même erreur... ... ...

    SNIF ...

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    tres bien mais le port ca peut etre autre chose

    il faudrait que tu contactes la hotline pour etre sur .

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    le port 80 est deja utilisé par apache si tu las et configuré par defaut

  16. #16
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 81
    Points
    81
    Par défaut ....
    Bonjour,

    J'ai beau chercher, mais je ne trouve pas de réponse!!

    Comment fait-on pour se débarrasser de l'erreur :

    "[BCC32 Erreur] my_list.h(30): E2015 Ambiguïté entre 'LIST' et 'Bde::LIST'"

    Lorsque je compile, tout se déroule bien. C'est lorsque je suis venu à créer un exécutable autonome (en autant les packages et le dynamic RTL Linking) que le problème est apparu.

    Je sais que ce problème est traité partout, mais je ne trouve pas de solution null part. Personne n'y répond. Enfin, selon mes recherches.


    Selon Crayon :

    Oui j'ai eu le même problème, le moyen simple de le résoudre est de remplacer dans tout les fichier MysQL LIST par MYSQLLIST, ou un autre nom qui te plait.


    où sont ces fichiers?

    enfin...



    Merci

    Antoine

  17. #17
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 81
    Points
    81
    Par défaut
    Bon en usant de mon intelligence (qui ne me semble pas trop grande)

    j'ai compris qu'il fallait changer dans le fichier my_list.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
    typedef struct st_list {
      struct st_list *prev,*next;
      void *data;
    } LIST;
     
    typedef int (*list_walk_action)(void *,void *);
     
    extern LIST *list_add(LIST *root,LIST *element);
    extern LIST *list_delete(LIST *root,LIST *element);
    extern LIST *list_cons(void *data,LIST *root);
    extern LIST *list_reverse(LIST *root);
    extern void list_free(LIST *root,unsigned int free_data);
    extern unsigned int list_length(LIST *);
    extern int list_walk(LIST *,list_walk_action action,unsigned char * argument);
    qui deviendra :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef struct st_list {
      struct st_list *prev,*next;
      void *data;
    } MYSQLLIST;
    
    typedef int (*list_walk_action)(void *,void *);
    
    extern MYSQLLIST*list_add(MYSQLLIST*root,MYSQLLIST*element);
    extern MYSQLLIST*list_delete(MYSQLLIST*root,MYSQLLIST*element);
    extern MYSQLLIST*list_cons(void *data,MYSQLLIST*root);
    extern MYSQLLIST*list_reverse(MYSQLLIST*root);
    extern void list_free(MYSQLLIST*root,unsigned int free_data);
    extern unsigned int list_length(MYSQLLIST*);
    extern int list_walk(MYSQLLIST*,list_walk_action action,unsigned char * argument);

    et je crois que cela entraine une modification dans le my_sql.h, j'ai modifier les LIST pour MYSQLLIST.

    Dites-moi si je me plante.

    Du moins, tout semble fonctionner... pour l'instant...


    ciao

    antoine

  18. #18
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par antoinelac Voir le message
    [...] je crois que cela entraine une modification dans le my_sql.h, j'ai modifier les LIST pour MYSQLLIST.

    Dites-moi si je me plante. [...]
    Sa fait longtemps, mais il me semble que c'est bien ce qu'il faut faire. Il y a quelques fichiers à modifier. Lorsque sa compile sa veut dire que c'est OK
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

Discussions similaires

  1. Erreur avec API Facebook
    Par kamalalex dans le forum Facebook
    Réponses: 0
    Dernier message: 28/04/2012, 14h32
  2. probleme avec api mysql
    Par nR.mEcs0ft dans le forum MySQL
    Réponses: 3
    Dernier message: 09/10/2010, 22h42
  3. Erreur avec composant MySQL
    Par akaii dans le forum VB.NET
    Réponses: 4
    Dernier message: 09/03/2010, 23h07
  4. probleme avec API mysql
    Par tyson75 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/06/2007, 20h00
  5. Réponses: 3
    Dernier message: 09/05/2006, 17h21

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