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 :

Requête avec paramètres - MySQL - C++


Sujet :

C++Builder

  1. #1
    Membre éclairé Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Par défaut Requête avec paramètres - MySQL - C++
    Bonjour,

    Je suis vraiment désespéré, je suis connecté à ma base mysql à partir d'un programme en C++ ( grâce à l'api de mysql) sur borland C++ builder 6.

    Seulement lorsue je veux interroger la base de donnée à partir d'une requête avec un ou plusieurs paramètres. J'arrive à faire des requêtes simple grâce a mysql_query. Mais je n'arrive pas a passer de paramètres à ma commande.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query(mySQL, "select * from Joueur where Pseudo = 'BOB'") ;
    <-- cette requete me retourne les infos du joueur BOB

    Problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     string NomDuJoueur; 
    NomDuJoueur="BOB"; 
    mysql_query(mySQL, "select * from Joueur where Pseudo = " NomDuJoueur);
    Voila j'espere avoir des réponses
    Merci à tous ceux qui se pencheront sur mon problème

  2. #2
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    Qqchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string NomDuJoueur;
    NomDuJoueur="BOB";
    String S = AnsiString("select * from Joueur where Pseudo = ") + NomDuJoueur; 
    mysql_query(mySQL, S);
    ?

    Mais je ne connais pas le type des arguments attendus par mysql_query ...
    En espérant t'aider,
    @+

  3. #3
    Membre éclairé Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Par défaut
    Je te remercie beaucoup de ta réponse.
    Cependant la ligne où j'utilise mysql_query donne des erreurs:
    Impossible de convertir un AnsiString en const char*

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Essaies:
    a la place.
    (vérifie la syntaxe exacte, s'il te plait)

  5. #5
    Membre éclairé Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Par défaut
    Le code compile enfin, mais n'affiche rien ^^

    Voici le 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
    ListBox2->Items->Clear();
    String NomDuJoueur;
    NomDuJoueur="Clyde";
    String S = "select * from Joueur where Pseudo = " + NomDuJoueur;
    if (!mysql_query(mySQL, S.c_str()))
    {
    myRES = mysql_store_result(mySQL);
    if (myRES)
    {
    for(unsigned int i = 0; i < myRES->row_count; i++)
    {
    myROW = mysql_fetch_row(myRES);
    for(unsigned int j = 0; j < mysql_num_fields(myRES); j++)
    {
    aStr = myROW[j];
    ListBox2->Items->Add(aStr);
    }
    }
    mysql_free_result(myRES);
    }
    }

  6. #6
    Membre éclairé Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Par défaut
    après test je remarque que l'on ne rentre pas dans mon if...

  7. #7
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Essayes avec ceci comme requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String S = "select * from Joueur where Pseudo = " + QuotedStr(NomDuJoueur);
    Généralement, dans les requêtes SQL, les champs Texte/Caractère demandent des quottes en début et fin pour être correctement utilisés

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut j ai testé ce code , çà fonctionne
    Salut

    tout d abord , ajoutes un panel1 , il permet de verifier l etat de la connection avant d envoyer la requete

    ensuite as tu ajouté libmySQL.dll et libmySQL.lib au projet ?

    enfin as tu modifié mysql.h et l as tu mis en include ?



    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
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    AnsiString Mon_ip = 127.0.0.1 ;
    AnsiString Mon_user = moi ;
    AnsiString Mon_pass = 123456 ;
    AnsiString Ma_base = mabdd ;
     
     
    MYSQL *mySQL; mySQL = mysql_init(NULL);
    if (!mysql_real_connect(mySQL, Mon_ip.c_str() , Mon_user.c_str(), Mon_pass.c_str() ,Ma_base.c_str(), 3306, NULL, 0))
    { Panel1->Color=clRed;     Panel1->Caption="Echec";     }    // la connection a échoué
     else  { Panel1->Caption="Ok";                             // la connection a réussi
     
     
     ListBox2->Items->Clear();
    AnsiString NomDuJoueur;
    MYSQL_RES *myRES; MYSQL_ROW myROW;
    NomDuJoueur="Clyde";
    AnsiString aStr ;
    AnsiString S = "select * from Joueur where Pseudo = \"" + NomDuJoueur + "\"";
     
    if (  !mysql_query(  mySQL, S.c_str()  )  )
    {    myRES = mysql_store_result(mySQL);
            if (myRES)
                {
    			for(unsigned int i = 0; i < myRES->row_count; i++)
    				{
    				myROW = mysql_fetch_row(myRES);
    				for(unsigned int j = 0; j < mysql_num_fields(myRES); j++)
    					{ aStr = myROW[j];  ListBox2->Items->Add(aStr); }
    				}
    			}
    }
    mysql_free_result(myRES);
    }
    }

    telecharges le projet ici pour builder 6
    http://dl.free.fr/b9qezNJA3/bcbreponsesql.zip

  9. #9
    Membre éclairé Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Par défaut Solution mais autre problème lol
    Merci pour vos réponses.

    J'ai bien inclus tout les .lib et mis les .dll au bonne endroit.

    J'arrive à me connecter à ma base.
    J'arrive aussi à faire des requetes avec des parametres mais cela ne fonctionne pas lorsque j'ai plus de 2 paramètres

    Le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
             std::string pseudo="Goliate";
            std::string pass="123456";
            std::string mail="aha@aha.com";
            std::string com="test";
     
           sprintf(requete,"INSERT INTO Joueur (PSEUDO, PASSWORD, EMAIL, COMMENTAIRE, nbpartieJouee, NbPartieGagnee, NbPoint) VALUES ('%s','%s','%s','%s','0','0','0')", pseudo, password, mail, comm);
     
        std::cout << requete << std::endl;
     
        mysql_query(mySQL, requete);

    Mon premier paramètre fonctionne correctement mais les autres se transforme en caractères spéciaux pas du tout attendus

    Si quelqu'un a une solution

  10. #10
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    pourquoi ne prends-tu pas directement la query générée et la balancer dans un outil tel que MySQLcc ou tout autre outil te permettant de travailler sur MySQL ?

    De cette manière tu pourrais plus facilement debugger.

    As-tu aussi regardé les valeurs de retour des fonctions mysql ? non je suppose.

    grrrrrr pas bien.

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

Discussions similaires

  1. Requête avec paramètres variables
    Par dahu17 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/05/2007, 10h38
  2. [Requête][03]Problème d'export d'une requête avec paramètre
    Par SLE dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 02/04/2007, 11h29
  3. Réponses: 5
    Dernier message: 06/01/2007, 04h48
  4. [Oracle] - Requête avec paramètres
    Par b00tny dans le forum Langage SQL
    Réponses: 4
    Dernier message: 24/04/2006, 16h09
  5. test d'une requête avec paramètre
    Par hervé14670 dans le forum Access
    Réponses: 1
    Dernier message: 12/01/2006, 22h45

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