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 :

Problême requete MySql avec Borland 6 c++


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problême requete MySql avec Borland 6 c++
    Bonjour a tous
    Bon je dois fair un petit programme pour mon projet en info avec Borland et l'utilisation de base de données (Recherche, Insérer, Modification) de plaque de véhicule, carte grise, etc... (Celui qui dis que je fais un boulot pour la police je le :p).
    Donc voici les Etapes :
    *Connexion à la base de Donnée (Easyphp1.8) : ça c'est bon.
    *Une fois connexion activé, la fonction Total_Vehicule(void) se lance desuite : la requête marche niquel le code est bon.
    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
    /************************************************
    But: Requête pour savoir le nombre total de véhicules enregistrées.
    Param. Entrée: Void
    Param. Sortie: retourne le nombre.
    ************************************************/
    int C_bdd::Total_Vehicule(void)
    {
    int nbre_voiture;
    reqSQL= new char [30]; //Taille de la requête.
     
    sprintf (reqSQL,"SELECT * FROM voiture");
    mysql_query (mySQL, reqSQL);
    myRES=mysql_store_result (mySQL);
    nbre_voiture = mysql_num_rows(myRES);
    delete reqSQL;
    return nbre_voiture;
    }


    *Ensuite sur l'IHM j'ai 3 Edit : Immatriculation, date carte grise et date Circulation et un bouton Enregistrer. A ce moment le code ci dessous ce lance.
    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
    /************************************************
    But: Requête pour inserer des informations dans la Base de données.
    Param. Entrée: Char[15], Char[15], Char[15].
    Param. Sortie: Void.
    ************************************************/
    void C_bdd::Requete_ecrire(char immatricule[15],char dateGrise[15],char dateService[15])
    {
    int i;
    reqSQL= new char [100]; //Taille de la requête.
    
    sprintf (reqSQL,"SELECT * FROM voiture WHERE imma = '%s'",immatricule);
    mysql_query (mySQL, reqSQL);
    myRES=mysql_store_result (mySQL);
    i = mysql_num_rows(myRES);
    if(i!=0)
            {
            MessageBox(NULL,"Le véhicule éxiste déjà.","Attention: Véhicule éxistant.",MB_OK |MB_ICONEXCLAMATION);
            }
    else
           {
            sprintf(reqSQL,"INSERT INTO voiture (imma,date,date1) VALUES ('%s','%s','%s')",immatricule,dateGrise,dateService);
            if (mysql_query (mySQL, reqSQL)!=0)
                    {MessageBox(NULL,"Impossible d'enregistrer un nouveau véhicule.","Erreur: Ecriture dans la BDD.",MB_OK |MB_ICONERROR);}
            }
    delete reqSQL;
    }
    Et là.... c'est le drâme Erreur comme vous montre l'image ci dessous. L'erreur ce fait sur la ligne que j'ai mis en Gras. (Débugueur Etape par Etape)

    J'ai verifié les droit sur EasyPHP il est en master avec tous les droit activé. Le truc que je comprend pas c'est que la requête juste avant (celle qui recherche le nombre de voiture inscrite) marche tres bien et celle là non !!!
    Par avance je vous remercie de bien m'éclairer sur ce petit problême surement tout simple


    Logiciels utilisés: Borland C++ 6 et EasyPHP1.8

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 135
    Points : 66
    Points
    66
    Par défaut
    Essaye cette instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    sprintf (reqSQL,"SELECT * FROM voiture WHERE imma='%s'", mysql_real_escape_string(immatricule));

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut James_
    Bon alors j'ai testé le code que tu m'as dit mais non Erreur
    [C++ Erreur] bdd.cpp(73): E2034 Impossible de convertir 'char *' en 'st_mysql *'
    [C++ Erreur] bdd.cpp(73): E2342 Mauvaise correspondance de type dans le paramètre 'mysql' ('st_mysql *' désiré, 'char *' obtenu)
    [C++ Erreur] bdd.cpp(73): E2193 Trop peu de paramètre dans l'appel à '__stdcall mysql_real_escape_string(st_mysql *,char *,const char *,unsigned long)'

    Personne d'autre a une solution ?
    Je peu même vous envoyer tout mon code si vous voulez mais la j'ai vraiment aucune idée :s Surtout qu'en plus la requête juste avant marche tres bien et celle la non.

  4. #4
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Voila petite vidéo pour vous montrez ce que ça donne.
    Vidéo

  5. #5
    Membre habitué Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Points : 197
    Points
    197
    Par défaut
    salut, moi ce code fonctionne chez moi .... avec MySQL

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    int TForm1::Total_Vehicule(void)
    {
        MYSQL* mySQL = NULL;
     
        /** Obtenir un descripteur d'accès au SGBD */
        if((mySQL = mysql_init(NULL)) == NULL)
            return -1;
     
        /** Se connecter à la BDD */
        if ((mysql_real_connect(mySQL, "127.0.0.1", "root", "root", "laba", 0, NULL, 0)) == NULL)
        {
            MessageDlg("Erreur de connexion à la base de données !",  mtError, TMsgDlgButtons() << mbOK, 0);
            return -1;
        }
     
        int nbre_voiture;
        mysql_query (mySQL, "SELECT * FROM voiture");
        MYSQL_RES *myRES = mysql_store_result (mySQL);
        nbre_voiture = mysql_num_rows(myRES);
        return nbre_voiture;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        ShowMessage(Total_Vehicule());
    }
    //---------------------------------------------------------------------------
     
     
    void TForm1::Requete_ecrire(char immatricule[15],char dateGrise[15],char dateService[15])
    {
        MYSQL* mySQL = NULL;
     
        /** Obtenir un descripteur d'accès au SGBD */
        if((mySQL = mysql_init(NULL)) == NULL)
            return ;
     
        /** Se connecter à la BDD */
        if ((mysql_real_connect(mySQL, "127.0.0.1", "root", "root", "mabase", 0, NULL, 0)) == NULL)
        {
            MessageDlg("Erreur de connexion à la base de données !",  mtError, TMsgDlgButtons() << mbOK, 0);
            return ;
        }
     
        char *reqSQL= new char [100]; // Taille de la requête.
     
        sprintf (reqSQL, "SELECT * FROM voiture WHERE imma = '%s'", immatricule);
        mysql_query (mySQL, reqSQL);
        MYSQL_RES *myRES = mysql_store_result (mySQL);
        if(mysql_num_rows(myRES) != 0)
        {
            MessageBox(NULL,"Le véhicule éxiste déjà.","Attention: Véhicule éxistant.",MB_OK |MB_ICONEXCLAMATION);
        }
        else
        {
            sprintf(reqSQL,"INSERT INTO voiture (imma,date,date1) VALUES ('%s','%s','%s')",immatricule,dateGrise,dateService);
            if (mysql_query (mySQL, reqSQL) != 0)
                    MessageBox(NULL,"Impossible d'enregistrer un nouveau véhicule.","Erreur: Ecriture dans la BDD.",MB_OK |MB_ICONERROR);
        }
        delete reqSQL;
    }
    //--------------------------------------------------------------------------
     
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
        Requete_ecrire(Edit1->Text.c_str(), Edit2->Text.c_str(), Edit3->Text.c_str());
    }
    //---------------------------------------------------------------------------

  6. #6
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut AC/DC
    Bon je vais tester ça dessuite et je te dirais si c'est bon ou pas, Merci ^_^

    Edit: Bon pour l'instant ya tjs des soucis meme avec ton code, c'est comme si la connexion avait laché. Je continue a chercher

  7. #7
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    AC/DC j'ai fais comme toi mais non sa veux tjs pas, apres j'ai regardé un peu si ma connexion était pas foireuse et on dirais qu'elle se déconnect automatiquement. Donc comme tu vois sur la vidéo je rajoute la ligne de commande pour me reconnecter et un autre code d'erreur viens à la place.
    Vidéo

    Pour être sur que sa venait pas des droits, j'ai tout ré-installé EasyPHP et j'ai laissé tout par défault.
    Je suis un peu perdu là

  8. #8
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bon j'arrive vraiment pas a comprendre pourquoi sur mon interface mon code bloque sur la 2eme partie alors que en mode console sa marche niquel.
    Pour pas quand même baisser les bras je met en DL le projet. Si quelqu'un arrive a trouver d'ou venait l'erreur n'hésitez pas à le dire
    Projet BDD

  9. #9
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    C'est bon a trouvé l'erreur sans la trouvé en fait Bon en gros j'ai dégagé toute ma classe C_bdd.cpp et C_bdd.h (qui était dans une nouvelle unité) que j'ai incorporé directement dans le programme. Ma foi si ça marche comme ça c'est pas très grave même si sa fait moche

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

Discussions similaires

  1. Requete MySQL avec un Rand sur une table
    Par tom06440 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/01/2006, 17h37
  2. Afficher une requete MYSQL avec jointure
    Par Higestromm dans le forum Requêtes
    Réponses: 8
    Dernier message: 18/12/2005, 15h52
  3. Probleme requete Mysql avec WHERE
    Par Dom_the_quaker dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/10/2005, 16h21
  4. Problème de compilation avec Borland : Direct Draw
    Par Burckel dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 26/09/2005, 18h17
  5. Problème de link avec Borland C++ 5.5
    Par gelam dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 24/11/2003, 16h45

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