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 SQL avec paramètres


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 142
    Points : 56
    Points
    56
    Par défaut Requète SQL avec paramètres
    Bonjour,

    Je voudrais créer une requète avec plusieur paramètre avant de l'executer ! mais je ne sais pas comment former un requète SQL en C++

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    std::string requete;
     
    		if(parameter != "Type"){
    			requete = "INSERT INTO Ellipse(ID," + parameter + ") VALUES ('2','" + value + "')";
    			FPrinc->IBQEllipse->SQL->Text = requete  ;
    			FPrinc->IBQEllipse->ExecSQL();
    		}
    et voici mon message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [C++ Error] ParamBdd.cpp(60): E2034 Cannot convert 'std::string' to 'AnsiString'
    Merci beaucoup

  2. #2
    Membre expert
    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 : 53
    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
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    As tu essayé d'utiliser plutôt un 'string' ou un 'AnsiString' ?
    Du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AnsiString requete;
    tout simplement ...

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 142
    Points : 56
    Points
    56
    Par défaut
    merci mais nn c'a fonctionne pas !!

    mais comment faite vous pour faire ce genre de chose ? en temps normal

    J'arrive a faire ce genre de manip en php, Java .. mais alors C++ ... je vois pas comment fair lol

    Aidez moi

  4. #4
    Membre expert
    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 : 53
    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
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Essaies qqchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AnsiString requete;
    ///
    requete = AnsiString("INSERT INTO Ellipse(ID,") + parameter + (") VALUES ('2','") + value + ("')");
    Par précaution, j'aurais eu tendance a demander (pour moi et tous ceux en mesure d'aider) qq détails supplémentaires tels que:
    quel est exactement le dernier test fait ?, quel est le dernier message d'erreur ?, sur quel type de base de données travailles-tu ?, quels type d'objets orientés donnés? (TQuery, etc ?)

    En espérant t'aider,
    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 142
    Points : 56
    Points
    56
    Par défaut
    marche toujour pas

    Alors la fonction que je test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	void ParamBdd::Sauve(std::string parameter, std::string value) const
    	{
    		std::string requete;
     
    		if(parameter != "Type"){
    			requete = AnsiString("INSERT INTO Ellipse(ID,") + parameter + (") VALUES ('2','") + value + ("')");
    			FPrinc->IBQEllipse->SQL->Text = requete  ;
    			FPrinc->IBQEllipse->ExecSQL();
    		}
     
    	}
    Les test est juste d'effectuer une requète a l'appel de cette fonction

    Les messages d'erreur retournés sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [C++ Error] ParamBdd.cpp(59): E2094 'operator+' not implemented in type 'AnsiString' for arguments of type 'std::string'
    [C++ Error] ParamBdd.cpp(60): E2034 Cannot convert 'std::string' to 'AnsiString'
    Donc effectivement j'utilise un composant TQuery sur une base de donnée Interbase 7.5

    Je m'y prend peut etre mal il y as peut etre un autre moyen d'executer une requète SQL en C++...

    Merci

  6. #6
    Membre expert
    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 : 53
    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
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Ben disons que je ne comprends pas pourquoi il te faut impérativement utiliser pour cela des appels a 'std::etc ...', alors que tu devrais utiliser des 'concepts' de la VCL de Borland (String et AnsiString).

    Donc, la fonction 'facon' builder pourrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall ParamBdd::Sauve(String parameter, String value) 
    	{
    		String requete;
     
    		if(parameter != "Type"){
    			requete = AnsiString("INSERT INTO Ellipse(ID,") + parameter + (") VALUES ('2','") + value + ("')");
    			FPrinc->IBQEllipse->SQL->Text = requete  ;
    			FPrinc->IBQEllipse->ExecSQL();
    		}
     
    	}
    mais je ne dis pas que c'est mieux ou bien, je pense juste que dans un 'contexte' builder, ca devrais marcher ...

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  7. #7
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Indépendamment du fait que ce soit une requête, la constitution de la requête comme chaîne doit fonctionner, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void TForm1::Sauve(AnsiString parameter, AnsiString value)
    {
    AnsiString requete;
     
    if(parameter!="Type")
       {
       requete="INSERT INTO Ellipse(ID,"+parameter+(")VALUES('2','")+value+("')");
       }
    }
    Ce code se compile parfaitement sans erreur. Donc si ça ne marche pas chez vous, c'est qu'il se passe autre chose.

    À bientôt
    Gilles

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/03/2012, 15h36
  2. Requête SQL avec paramètre sous visual studio 2008
    Par Jeecer dans le forum Accès aux données
    Réponses: 3
    Dernier message: 21/08/2011, 10h18
  3. Appel requête SQL avec paramètre
    Par sgcb01 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 13/11/2008, 12h13
  4. Requête SQL avec paramètre sur BDD Access
    Par BigMike dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/06/2007, 12h21
  5. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33

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