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 :

requete SQL clause WHERE avec variable


Sujet :

JDBC Java

  1. #1
    Membre du Club Avatar de gabule
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Points : 45
    Points
    45
    Par défaut requete SQL clause WHERE avec variable
    Voila, je dois faire une requete avec un WHERE dynamique et je ne sais pas comment faire le where avec la variable.
    Comment je fais?

    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
    16
    17
    18
    19
    20
    21
     
    //    Etablissement de la connexion
     try {
       Connection connexion = DriverManager.getConnection ("jdbc:mysql://localhost/mozart21_database",  "root", "");
    System.out.println ("La connexion fonctionne parfaitement");
     // executer une requette
     for (int i = 0; i < voiesSelectionnes.length; i++)
       {System.out.print (" " + voiesSelectionnes[i]);
     
          Statement st = (Statement) connexion.createStatement ();
            ResultSet result = (ResultSet) st.executeQuery (
            "select chemin from donnees WHERE voie = voiesSelectionnes[i] group by voie");
    while (result.next ()) {
      // lire les resultats de la requette
    System.out.println (result.getString (1));
      ListModelVoie.addElement (result.getString (1));
       }
    }
     
     
     //         on ferme la connection

  2. #2
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "select chemin from donnees WHERE voie = "+voiesSelectionnes[i]+" group by voie"
    ou beaucoup plus propre avec un PreparedStatement

    ps : tes cast sont inutiles

  3. #3
    Membre du Club Avatar de gabule
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Points : 45
    Points
    45
    Par défaut
    Merci ca marche.
    ou beaucoup plus propre avec un PreparedStatement

    ps : tes cast sont inutiles
    c koi un cast ? et un prepared statement ?

  4. #4
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    Citation Envoyé par gabule
    Merci ca marche.


    c koi un cast ? et un prepared statement ?
    Je serai toi j'irai voir quelques tutoriels parce que apparemment tu en as bien besoin.

    Pour savoir ce qu'est un préparedStatement il te suffit de lire la javadoc

    et un cast est un truc du genre Ce qui veut dire que tu dit explicitement que tu veux que ta variable "st" soit considérée comme un statement.

    dans ton code on trouve par exemple ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultSet result = (ResultSet) st.executeQuery (...);
    le cast "(ResultSet)" est inutile puisque st.executeQuery() renvoit déjà un résultat du type ResultSet.

  5. #5
    Membre du Club Avatar de gabule
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Points : 45
    Points
    45
    Par défaut
    oki
    Merci bcp !

  6. #6
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Juste pour info, je pense que tu gagnerais en performance avec ce type de requete :
    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
    try {
           Connection connexion = DriverManager.getConnection ("jdbc:mysql://localhost/mozart21_database",  "root", "");
        System.out.println ("La connexion fonctionne parfaitement");
     
        // executer une requette
        String lesVoies = "";
        int i=0;
         while(i<voiesSelectionnes.length) {
             lesVoies = lesVoies+voiesSelectionnes[i]+",";
             System.out.print (" " + voiesSelectionnes[i]);
             i++;
         }
         if(i>1) {
             lesVoies=lesVoies.substring(0, lesVoies.length() - 1)
         }
     
        Statement st = (Statement) connexion.createStatement ();
        ResultSet result = (ResultSet) st.executeQuery ("select chemin from donnees WHERE voie in ("+lesVoies+") group by voie");
        while (result.next ()) {
              // lire les resultats de la requette
            System.out.println (result.getString (1));
              ListModelVoie.addElement (result.getString (1));
           }
    }
    Cela te permet de n'effectuer qu'une seule requete. dans l'absolu, ca fait la meme chose. Maintenant, il faut vérifier que ca ne pose pas de probleme avec ce que tu veux faire dans l'ensemble.
    NB : ca n'enleve rien au fait qu'il faille utiliser de préférence un PreparedStatement et qu'il faut caster tes voies selectionnées.

  7. #7
    Candidat au Club
    Homme Profil pro
    Home
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Home

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Difficultés requête SQL en JAVA
    Bonjour tout le monde svp comment pourrais écrire cette requête sql dans mon IDE JAVA sans souci
    SELECT matiere.nom_matiere, professeur.nom_professeur
    FROM professeur, matiere
    WHERE matiere.Id_professeur= professeur.Id

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/09/2019, 23h16
  2. Variable d'une clause where avec quote
    Par kcizth dans le forum Langage SQL
    Réponses: 1
    Dernier message: 17/04/2008, 15h43
  3. sql, clause where et variable publique
    Par sebinator dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 05/11/2007, 14h33
  4. [SQL] fonction where avec variable
    Par rvm31 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/10/2007, 09h12
  5. [Oracle / Sql] clause where avec resultat d'une requete
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 2
    Dernier message: 31/01/2006, 09h37

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