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 :

Substitution dans une requ�te SQL param�tr�e [Base de donn�e]


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut Substitution dans une requ�te SQL param�tr�e
    Bonjour � tous,

    Dans mon programme, j'ai une requ�te SQL param�tr�e o� je dois substituer les bonnes valeurs. Par exemple, disons que ma requ�te est :

    SELECT * FROM test WHERE var1=:valeurvar1 AND var2=:valeurvar2

    Je dois substituer valeurvar1 et valeurvar2 par les valeurs correctes. Je poss�de une map (d�j� constitu�e), qui me donne la valeur correspondante.
    Je voudrais donc boucler sur l'ensemble des param�tres de la requ�te et assigner la bonne valeur venant de la map.
    J'ai un d�but de code mais je n'arrive pas � aller plus loin, plus particuli�rement je ne sais pas comment r�cup�rer ce qui va me servir de cl� dans ma map (� savoir valeurvar1, valeurvar2).
    Voici mon 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
     
    String __fastcall test::substitution(TADOConnection *cnn, String sSQL)
    {
       TADOQuery* query = new TADOQuery(NULL);
     
       query->Connection = cnn;
       query->SQL->Add(sSQL);
     
       for(int i = 0; i < query->Parameters->Count; ++i)
       {
          query->Parameters->Items[i]->Value = getVariableValue(query->Parameters->Items[i]->// ?);                   
       }
       query->Active = true;
       return query->Recordset;
    }
    A l'int�rieur du for, je veux donc assigner � la valeur du param�tre courant la valeur � substituer (via la fonction getVariableValue qui elle me retourne la valeur de la map).
    Aussi, j'ai mis String comme type de retour mais ma fonction doit en fait retourner un recordset. Est-ce que return query->Recordset; est correct, cela va-t-il bien retourner le recordset que la query va rapatrier une fois sa propri�t� Active pass� � true ? Le type de la valeur de retour est Recordset alors ?

    Voil�, c'est encore un peu flou pour moi, si quelqu'un peut m'�clairer.
    Merci d'avance.

  2. #2
    Membre �m�rite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par d�faut
    Je dois substituer valeurvar1 et valeurvar2 par les valeurs correctes. Je poss�de une map (d�j� constitu�e), qui me donne la valeur correspondante.
    Je voudrais donc boucler sur l'ensemble des param�tres de la requ�te et assigner la bonne valeur venant de la map.
    J'ai un d�but de code mais je n'arrive pas � aller plus loin, plus particuli�rement je ne sais pas comment r�cup�rer ce qui va me servir de cl� dans ma map (� savoir valeurvar1, valeurvar2).
    Que donne la propri�t� Name de l'objet TParameter (cad query->Parameters->Items[i]->Name) ?

    Aussi, j'ai mis String comme type de retour mais ma fonction doit en fait retourner un recordset. Est-ce que return query->Recordset; est correct, cela va-t-il bien retourner le recordset que la query va rapatrier une fois sa propri�t� Active pass� � true ? Le type de la valeur de retour est Recordset alors ?
    Ton objet "query" est construit � l'int�rieur de la fonction "substitution". Quand comptes-tu d�truire cet objet ??
    Tu peux renvoyer ce TADOQuery*, ensuite la fonction appelante pourra aller taper dans la propri�t� Recordset de l'objet retourn�. Ce sera � la charge de la fonction appelante de d�truire cet objet quand elle n'en aura plus besoin..

  3. #3
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut
    Ok, merci pour les infos.
    J'ai bien compris pour le type de retour.
    En ce qui concerne la propri�t� Name, j'avais justement �t� voir sur :
    http://docs.embarcadero.com/products...eter_Name.html

    et �a dit :
    Use Name to identify a particular parameter within a TParameters object.
    Note: Name is the name of the TParameter object, not the name of the parameter it represents in a query or stored procedure.

    Apparemment, ce n'est pas le nom du param�tre dans la requ�te SQL (ou alors je me trompe).

    Encore merci.

  4. #4
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut
    Eh bien en fait �a marche du tonnerre, c'est moi qui avait mal compris la doc.
    Au temps pour moi.

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

Discussions similaires

  1. Param�tres dans une requ�te SQL en Sybase
    Par mdjobongo dans le forum SQL Anywhere
    R�ponses: 1
    Dernier message: 05/08/2011, 22h54
  2. R�ponses: 13
    Dernier message: 21/05/2010, 16h54
  3. R�ponses: 2
    Dernier message: 03/01/2009, 07h14
  4. R�ponses: 3
    Dernier message: 12/12/2008, 08h05
  5. R�ponses: 0
    Dernier message: 03/03/2008, 12h11

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