Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ignorer TextField vide dans une requête SQL

Sujet résolu
    14 mai 2018 à 23:07:33

    Bonjour, 

    Etant débutant en Java et SQL, pour un projet, je réalise une application de gestion de musiques.

    J'ai donc une fenêtre de ce type : 

    En remplissant un ou plusieurs des TextField, j'aimerai effectuer une recherche dans ma base de donnée et afficher dans la JTable les musiques correspondantes aux critères. 

    J'ai donc pour le moment une requête de ce type :

    requeteRecherche = "select *from Musique where titre_musique like '"+titreMusique+"%' and interprete_musique like '"+interpreteMusique+"%' and annee_production like '"+anneeProduction+"%' and note like '"+note+"%'";
            

    J'ai cependant des difficultés à trouver la bonne requête à effectuer pour éviter de faire énormément de if (si cela est possible) car ma requête ci-dessus nécessite que tout les champs soient remplit pour fonctionner.  Cette requête devrait donc "ignorer" les TextField non remplit.

    Merci beaucoup de votre aide ! Bonne soirée :)

    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2018 à 9:11:15

      Bonjour,

      Je vois deux façon de faire ...

      Soit tu considères qu'un champ non rempli est une chaîne vide, du coup en concaténant une chaîne vide avec tes %% tu vas "annuler" le filtre.

      Soit tu testes côté JAVA les valeurs de ton formulaire pour construire la chaîne SQL en fonction. Je ne suis pas expert Java, mais un truc du genre :

      requeteRecherche = "select * from Musique where 1=1 ";
      
      if( titre_musique ) {
      	requeteRechercher += "and titre_musique like '"+titreMusique+"%'";
      }
      if( interprete_musique ) {
      	requeteRechercher += "and interprete_musique like '"+interpreteMusique+"%'"
      }
      if( annee_production ) {
      	requeteRechercher += "and annee_production like '"+anneeProduction+"%'";
      }
      if( note ) {
      	requeteRechercher += "and note like '"+note+"%'";
      }
      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        15 mai 2018 à 9:28:20

        Merci beaucoup, après légères modifications ça fonctionne comme je le voulais ! :)

        requeteRecherche = "select * from Musique where 1=1 ";
         
                if(!titreMusique.isEmpty()) {
                    requeteRecherche += "and titre_musique like '"+titreMusique+"%'";
                }
                if(!interpreteMusique.isEmpty()) {
                    requeteRecherche += "and interprete_musique like '"+interpreteMusique+"%'";
                }
                if(!anneeProduction.isEmpty()) {
                    requeteRecherche += "and annee_production like '"+anneeProduction+"%'";
                }
                if(!note.isEmpty()) {
                    requeteRecherche += "and note like '"+note+"%'";
                }



        • Partager sur Facebook
        • Partager sur Twitter

        Ignorer TextField vide dans une requête SQL

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown