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++ Discussion :

Query et Param�tres de Requete SQL


Sujet :

C++

  1. #1
    Membre �clair�
    Inscrit en
    Juin 2007
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par d�faut Query et Param�tres de Requete SQL
    Bonjour a tous !

    Voila je suis dans un projet de d�veloppement pour une association, et je g�re les donn�es dans une base MySQL.
    Jusque la aucun soucis.

    Pour mon d�veloppement, j'essaie de reprendre au maximum des r�gles d'UML, donc en gros j'ai une couche interface, une couche application (avec une classe Admin,et des classes m�tiers), ensuite j'ai une couche Gestion des donn�es dans la base de donn�es..

    Je me suis cr�� une classe GestionQuery qui me permet d'ex�cuter mes requ�tes SQL. Cette classe contient un objet TQuery, afin que si un jour j'utilise une autre Bdd, je n'ai pas a modifier tout mon code.

    Donc la Classe Admin instancie une classe m�tier qui s'appelle GestionFamille.

    Cette classe GestionFamille g�re tout ce qui concerne les informations de Famille, et cr��e une Requete SQL, que j'envoie en param�tre � la classe GestionQuery.

    Donc pour appliquer ma requete a GestionQuery, je fais un appel du genre:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ObjGestionQuery->SetRequeteSQL(SValRequete);
    Cette requ�te, que ce soit un SELECt ou un INSERT INTO, est faites avec des param�tres, les valeurs �tant diff�rente selon les cas.
    Je me dois donc d'envoyer a GestionQuery, la valeur des param�tres de ma requ�te envoy�e.

    Donc il me faudrait une m�thode appel�e AddParam�tre.

    Ca me ferai un code du genre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    ObjGestionQuery->AddParametre("Param1");
    ObjGestionQuery->AddParametre("Param2");

    Ici se trouve ma difficult�, je ne sais pas comment d�velopper ma m�thode AddParametre, sachant que le nombre de param�tre peut varier suivant la requete.

    A savoir aussi, que dans ma classe GestionQuery, je ne veux avoir qu'une seule m�thode SetREquete et Addparametre, afin de ne pas surcharger mon code.


    Merci si vous pouvez m'eclairer, et surtout si vous me comprennez

  2. #2
    Expert confirm�

    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    4 253
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par d�faut
    En g�n�ral, les param�tres SQL d'une requ�tes sont ou "nomm�s" genre: "select * from MyTable where name like :value"
    ou bien num�rot�s genre: "select * from MyTable where name like ?"

    En ODBC, on va demander la cr�ation d'un objet de requ�te avec cette chaine... puis on va passer les param�tres ou bien avec:

    request.setString("value",myValue);
    ou
    request.setString(1,myValue);

    Le code ressemble donc �:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // peut être fait dans 'ailleurs'...
    SQLHANDLE hStatement;
    SQLAllocHandle(SQL_HANDLE_STMT,connectionHandle,&hStatement);
    string stmt = "select * from MyTable where firstname like ?";
    SQLPrepare(hStatement,stmt.c_str(),stmt.length());
    // 
    SQLBindParameter(hStatement, 1, SQL_PARAM_INPUT,  SQL_C_CHAR, SQL_VARCHAR, value.length(), 0, value.c_str(), 0 value.length());
    SQLExecute(hStatement);
    ...
    (c'est sur que c'est quand m�me plus propre en JDBC ).

    L'inter�t est triple... permettre plusieurs param�tres (d'ou ma pr�f�rence pour la version 'nomm�e' qui permet de s'affranchir de la req�ete), g�rer automatiquement les 'escapes' (surtout pour les chaines de caract�res, et les formats de date), et m�me, si la dur�e de vie de l'objet request est suffisante, de permettre � la base de donn�e de pr�compiler la requ�te...

    Ceci-dit, il doit bien y avoir des wrappers C++ pour le code monstrueux ODBC !


    Maintenant, si la question est cot� C/C++ comment passer plusieurs param�tres, le "..." est ton ami [varargs].
    Voir les va_list / va_start / va_end....

Discussions similaires

  1. [WD17] passer des param�tres � une requete SQL
    Par hadaf dans le forum WinDev
    R�ponses: 12
    Dernier message: 31/05/2013, 21h06
  2. R�ponses: 2
    Dernier message: 28/10/2010, 13h16
  3. [2.3.0] param�tre dans requete SQL
    Par HelpmeMM dans le forum BIRT
    R�ponses: 2
    Dernier message: 29/07/2008, 09h54
  4. Param�tre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    R�ponses: 3
    Dernier message: 30/07/2002, 11h24

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