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 :

Utiliser IN() avec un PreparedStatement


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    rfv
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : rfv

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut Utiliser IN() avec un PreparedStatement
    Bonjour, avec les PreparedStatement on peut typer et définir le champ a écrire pour la requête, mais je n'arrive pas à utiliser IN()

    Par exemple : SELECT * FROM table WHERE id IN(2,8,12)
    Comment faire cela avec SELECT * FROM table WHERE id IN(?) ?
    ps.setString(1,"2,8,12"); // fausse la requête, devient IN("2,8,12") au lieu de IN(2,8,12)

    Merci j'espère pour votre aide, car recherche "IN" sur Internet, ça n'as ni sens ni résultat.

    Comment faut il s'y prendre ? sachant je ne compte pas utiliser OR id = 2 OR id = 8 OR id =12

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    il y a déjà eu plusieurs discussions à ce sujet. En fait il n'y a pas vraiment de possibilité pour utiliser le IN dans un PreparedStatement.

    Si je me souviens bien (mais vaut mieux que tu recherches sur le forum) il faut que tu crées dynamiquement une chaine du type IN(?,?,?,?,?) et que tu fasses les set qui vont bien sur cette chaine ...

  3. #3
    Membre confirmé
    Profil pro
    rfv
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : rfv

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut C'est donc impossible.
    En effet j'envisageai de faire une string et l'utiliser dans un simple Statement.
    Merci "in" pour ta réponse sur le IN()

  4. #4
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Par contre pour les chaines de caractères n'oublie pas de gérer les caractères spéciaux.

    Tu peux aussi imaginer un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String[] params = new String{"abc", "def", "ghi"};
    String requete = "SELECT ... IN " + getInClause(params); // te renvoie un (?,?,?)
     
    PreparedStatement pstmt = conn.prepareStatement(requete);
     
    // tu set les premiers ?
    // puis tu passes au in genre
    int x = 3 ;  // le nième paramètre
    for(String param : params) {
         pstmt.setString(x++,param);
    }
    enfin c'est pour le principe. tu devrais pouvoir faire beaucoup plus dynamique

  5. #5
    Membre confirmé
    Profil pro
    rfv
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : rfv

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut getInClause ?
    Merci pour ce complément, mais quelle est la classe qui propose la méthode : getInClause() ?

    En fait tu propose de coder une fonction getInClause() qui retournerait la String depuis le tableau de String, exact ?

  6. #6
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Citation Envoyé par sjachym Voir le message
    En fait tu propose de coder une fonction getInClause() qui retournerait la String depuis le tableau de String, exact ?
    Oui exactement

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

Discussions similaires

  1. [Kylix 3] Je n'arrive pas à utiliser MySQL
    Par usebob dans le forum EDI
    Réponses: 4
    Dernier message: 15/04/2005, 11h18
  2. PB de vue utilisant UNION avec ENTERPRISE MANAGER
    Par punglas dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/12/2004, 16h18
  3. Réponses: 5
    Dernier message: 19/08/2004, 12h11
  4. Réponses: 13
    Dernier message: 10/05/2004, 17h49
  5. Réponses: 12
    Dernier message: 02/02/2004, 14h41

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