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 :

Ins�rer variable integer dans requete SQL?


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par d�faut Ins�rer variable integer dans requete SQL?
    Bonjour � tous et a toutes, je suis nouveau sur le fofo et je suis d�ja dans la m****

    Voila en gros je suis entrain de r�aliser un soft avec C++ Builder et une base de donn�e MySQL. Je voulais savoir comment ins�rer une variable integer dans une requete SQL, la syntaxe "classique" ne me permet pas de r�cup�rer la valeur de cette variable... Enfin voici mon code pour que vous y voyiez plus clair:

    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
    if (ComboBox1->Text!="")
    	{
    	ComboBox4->Enabled=true;
     
    	SQLQuery1->Active=false;
    	SQLQuery1->SQL->Clear();
     
    	SQLQuery1->SQL->Add("SELECT `ID` FROM `categorie` WHERE intitule LIKE '"+catchoisi+"'");
    	SQLQuery1->Active=true;
    	int idcat=SQLQuery1->FieldValues["ID"];
     
    	SQLQuery1->Active = false;
    	SQLQuery1->SQL->Clear();
    	AnsiString sel = "SELECT `intitule` FROM `cours` WHERE id_categorie LIKE idcat ORDER BY intitule" ;
    	ShowMessage(sel);
    	SQLQuery1->SQL->Add(sel);
    	SQLQuery1->Active = true;
     
    	int count2 = SQLQuery1->RecordCount;
     
    	for (int i=0; i < count2; i++)
    		{
    		ComboBox2->Items->Add(SQLQuery1->FieldByName("intitule")->AsString);
    		SQLQuery1->Next();
    		}
    	}
    Avec ce code le ShowMessage que j'ai mis me fait bien comprendre qu'il envoie la requete avec la valeur idcat et non avec la valeur enti�re que cette variable idcat est senc�e contenir...

    Merci pour votre aide

  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
    Bonjour,

    Regardes du c�t� de ce post, par ex.
    Et surtout du c�t� des 'Params' des TQuery et autres dans le genre.

    @+

  3. #3
    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
    Citation Envoy� par El Doctor J Voir le message
    Avec ce code le ShowMessage que j'ai mis me fait bien comprendre qu'il envoie la requete avec la valeur idcat et non avec la valeur enti�re que cette variable idcat est senc�e contenir...

    Merci pour votre aide
    Normal,

    Ca ira bien mieux si tu fais une concat�nation lors de la construction de ta query.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    sel = "SELECT `intitule` FROM `cours` WHERE id_categorie LIKE '" + idcat + "' ORDER BY intitule";

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par d�faut
    Merci mais la syntaxe que tu me donne la fonctionnerait tr�s bien si mon "idcat" �tait du string, mais la c'est de l'integer et ca ne fonctionne pas, j'avais d�ja essay� avant de poster ici

    Je suppose qu'il faut transformer cette variable integer en string pour que ca fonctionne puisque normalement une requete SQL est entierement en string ai-je ou� dire ^^

  5. #5
    R�dacteur/Mod�rateur
    Avatar de ero-sennin
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par d�faut
    Salut,

    Logiquement, si c'est un integer, on ne doit pas mettre de cote (sauf erreur de ma part).

    Essaie donc ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    sel = "SELECT `intitule` FROM `cours` WHERE id_categorie LIKE " + idcat + " ORDER BY intitule";
    A +

    PS: Perso, j'utilise le passage de param�tre pour me d�barrasser de ce genre de soucis ...

  6. #6
    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
    euh, si c integer, alors d�j� il faut faire un casting en str via IntToStr parce que sinon, le compilateur lance une erreur de compilation.

    2. le like n'est que pour une recherche textuelle, donc la QUERY est foireuse.
    3. Utiliser les Prepared Statement, �a n'a pas �t� invent� pour le plaisir des yeux.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    std::auto_ptr< TSQLQuery > query( new TSQLQuery( 0 ) );
    query->SQLConnection = an_instance_of_sql_connection;
     
    query->SQL->Text = "SELECT intitule FROM cours WHERE id_categorie = :ID_CAT ORDER BY intitule";
    query->ParamByName("ID_CAT")->AsInteger = id_cat;
    query->Active = true;
    Bon amusement.

  7. #7
    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

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par d�faut
    Bon ben j'ai essay� ton id�e swirtel mais ca bug encore pour je ne sais quelle raison. Par contre, voici un code qui fonctionne au poil qu'un pote geek m'a trouv�:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQLQuery1->Active = false;
    	SQLQuery1->SQL->Clear();
    	std:: ostringstream oss;
    	oss << idcat;
    	std::string sel = "SELECT `intitule` FROM `cours` WHERE id_categorie LIKE '" + oss.str() + "' ORDER BY intitule" ;
    	AnsiString sel2;
    	sel2 = sel.c_str();
    	SQLQuery1->SQL->Add(sel2);
    	SQLQuery1->Active = true;
    Voila, en tout cas merci pour votre aide quand meme, je repasserai surement plus d'une fois

    Je passe le sujet en r�solu

  9. #9
    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
    c'est du n'importe quoi. Si ton id_categorie est un num�rique, et qu'un like fonctionne dessus, alors y a un �norme soucis.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. variable dans requete SQL pour delphi
    Par socooooool dans le forum Bases de donn�es
    R�ponses: 9
    Dernier message: 25/01/2013, 11h27
  2. [MySQL] variable 'matable' en php dans requete sql insert
    Par Vortexia dans le forum PHP & Base de donn�es
    R�ponses: 0
    Dernier message: 08/03/2012, 13h28
  3. variable Unix dans requete SQL
    Par shakkou dans le forum Requ�tes
    R�ponses: 2
    Dernier message: 11/06/2010, 14h59
  4. variable dans requete sql
    Par xian21 dans le forum Langage SQL
    R�ponses: 5
    Dernier message: 09/01/2009, 12h14
  5. [Debutant] Variables dans requete SQL
    Par Freygolow dans le forum C#
    R�ponses: 11
    Dernier message: 21/05/2008, 09h14

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