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

JDBC Java Discussion :

Construction d'une requête paramétrée


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Avril 2009
    Messages : 168
    Points : 122
    Points
    122
    Par défaut Construction d'une requête paramétrée
    Bonjour,
    je souhaite faire une requête paramétrée, en utilisant la clause in.
    Exemple de requête:
    select * from table1 where column1=? and column2 in (?).
    Je souhaite connaitre la syntaxe à utiliser après le in et de quel type sera le paramètre du in.
    J'ai essayé des méthodes mais aucune n'a marché!!!
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Jamais eu l'occasion de faire ça, vu que j'ai tendance à éviter l'opérateur in comme la peste (sauf quand on a un jeu de valeurs petit et fini, genre 2 ou trois)...

    Mais bon un truc comme le suivant devrait être correct, sachant qu'il te faudra générer le nombre de ? adéquat puis appeler n fois la méthode setXXX qui convient...


  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Avril 2009
    Messages : 168
    Points : 122
    Points
    122
    Par défaut
    merci sinok, pour ta réponse!!!
    j'ai trouvé une autre astuce pour contourner ce problème de paramétrage de requête. Soit la requête suivante: select * from table1 where column1 in ?
    dans lequel ? représente les valeurs de mon paramètre. pour construire ces valeurs nous n'aurons qu'à les concaténer dans une chaine de caractères afin d'obtenir un truc du genre "(val1, val2, val3,......, valn)".

    Ensuite vu, que j'utilise du java, j'appelle une fonction (replaceall()) qui va changer ? par la chaine de caractères concaténé dans ma requete.
    A l'issue de cela, ma requete sera de la forme: select * from table1 where column1 in (val1, val2, val3,......, valn) et du coup, je peux exécuter ma requête sans soucis!!!!

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    A noter toutefois que la méthode que tu utilises là est vulnérable aux injections SQL, alors qu'en utilisant des vrais paramètres offerts par les PreparedStatement tu te protèges de ce genre d'attaque...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 290
    Points : 426
    Points
    426
    Par défaut
    Attention aux limitations de l'opérateur in. Avec Oracle 10g tu es limité à 1000 items... Si tu as une boucle qui te génère ta requête, tu peux avoir ce genre de problème.

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

Discussions similaires

  1. [ADO.Net][C#/Mysql] Comment exécuter une requête paramétrée?
    Par wremacle dans le forum Accès aux données
    Réponses: 6
    Dernier message: 07/02/2006, 17h55
  2. Réponses: 5
    Dernier message: 19/11/2005, 00h28
  3. Déterminer une requête paramétrée avec LIKE
    Par priest69 dans le forum Access
    Réponses: 4
    Dernier message: 24/10/2005, 20h29
  4. Ouvrir un curseur avec une requête paramétrée?
    Par nnj dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/07/2005, 15h12
  5. [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Par kaboume dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/07/2005, 15h50

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