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

avec Java Discussion :

while et aucun resultat


Sujet :

avec Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut while et aucun resultat
    bonjour!

    j'ai 2 boutons ( avec les dates de naissance) et quand je clike sur le premier il me renvoit aucun resultat (alros qu'il en existe bien dans la BDD) et sur le 2eme il me renvoit bien un resultat
    les resultats sont le nom en fonction de la date de naissance
    et je ne comprends pas pourquoi ?!

    mon 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
    public class Eleve extends JFrame implements ActionListener{
     
     
     
    	JButton button = new JButton();
    	JPanel pan = new JPanel();
    	private String dateNaiss;
     
     
     
    	public Eleve()
    	{
    String pilote = "com.mysql.jdbc.Driver";
     
    		try{
     
    			Class.forName(pilote);
    			Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/eleves","root","");
    			Statement stmt = conn.createStatement();
    			String requete = "SELECT date_naiss FROM eleves";
    			ResultSet resultat = stmt.executeQuery(requete);
     
     
    			while (resultat.next())
    			{
     
    				dateNaiss = resultat.getString("date_naiss");
    				button = new JButton ("date de naissance le : "+dateNaiss);
    				button.addActionListener(this);
    				pan.add(button);
    				setContentPane(pan);
     
     
    			}
     
     
    		}
    		catch (Exception e){
     
    			System.out.println("echec pilote : "+e);
    		}
    	}
     
     
     
     
    	public void actionPerformed(ActionEvent e) 
    	  {
    		if (e.getSource().equals(button))
    		{
     
    			String pilote = "com.mysql.jdbc.Driver";
     
    			try{
     
    				Class.forName(pilote);
    				Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/eleves","root","");
    				Statement stmt = conn.createStatement();
    				String rekette = "SELECT nom_eleve FROM eleves WHERE date_naiss = "+"\""+dateNaiss+"\"";
    				System.out.println(rekette);
    				ResultSet resultatt = stmt.executeQuery(rekette);
     
     
     
    			try {
    				while (resultatt.next())
    				{
    					String nom = resultatt.getString("nom_eleve");
    					System.out.println("nom_eleve" +nom);
     
     
    				}
     
    			}
    			catch (Exception e1){
     
    				System.out.println("echec pilote : "+e1);
    			}
     
    				}
    			catch (Exception e1){
     
    				System.out.println("echec pilote : "+e1);
    			}
     
     
    			}
    		}
     
     
     
     
     
     
    	public static void main(String[] args) {
    		Eleve elv = new Eleve();
    		elv.setSize(200,200);
    		elv.setVisible(true);
     
    	}
     
    }
    merci pour votre aide!

  2. #2
    Membre chevronné Avatar de Haywire
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2006
    Messages : 462
    Par défaut
    Salut, le bouton qui est déclaré et initialisé dans la boucle while de ton constructeur n'est pas visible dans la méthode actionPerformed tout simplement.
    Tu dois déclarer les deux boutons en dehors de toute méthode, avec deux noms différents évidemment.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut
    oui mais les boutons sont issus d'une requete donc je peux en avoir 2 comme je peux en avoir 5!

  4. #4
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par crapaud Voir le message
    oui mais les boutons sont issus d'une requete donc je peux en avoir 2 comme je peux en avoir 5!
    un tableau de bouton alors ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut
    un tableau??
    parce que j'ai un bouton sur les 2, soit le 1er, qui me renvoit ce que je veux mais pas l'autre

  6. #6
    Membre chevronné Avatar de Haywire
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2006
    Messages : 462
    Par défaut
    Oui un tableau ou une liste.

    Peu importe la manière, mais tu dois avoir accès à tes boutons hors du constructeur donc tu ne peux pas les référencer avec une variable locale.

    actionPerformed n'a accès qu'au bouton que tu déclares hors des méthodes c'est pour ça qu'un click sur l'autre bouton ne fait rien.

  7. #7
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut
    Salut,
    Dans la boucle while tu crées chaque fois une instance de JButton et l'affectes à la variable button. Ainsi, button contiendra la derniere instance ayant été créée (sans parler de dateNaiss qui quant à elle contiendra la toute dernière valeur) et de ce fait seul le dernier bouton marchera puisque dans la méthode actionPerformed tu testes si la source de l'évènement est bouton.
    Pour pallier le problème tu peux essayer une solution comme celle-ci:

    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
    
    while (resultat.next())            {
        dateNaiss = resultat.getString("date_naiss");
        button = new JButton ("date de naissance le : "+dateNaiss);
    
        button.setActionCommand(dateNaiss);
    
        button.addActionListener(this);
    pan.add(button);
     setContentPane(pan);
     }
    ...
    public void actionPerformed(ActionEvent e)
       { 
                String birthday =  ((JButton)e.getSource()).getActionCommand();
                String rekette ="SELECT nom_eleve FROM eleves WHERE date_naiss = "+"\""+birthday+"\"";
         ....
    
     }
    Attention: Code non testé.
    Note: evite de créer une nouvelle connexion pour chaque requête.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut
    Citation Envoyé par Amine_sas Voir le message
    Salut,
    Dans la boucle while tu crées chaque fois une instance de JButton et l'affectes à la variable button. Ainsi, button contiendra la derniere instance ayant été créée (sans parler de dateNaiss qui quant à elle contiendra la toute dernière valeur) et de ce fait seul le dernier bouton marchera puisque dans la méthode actionPerformed tu testes si la source de l'évènement est bouton.
    Pour pallier le problème tu peux essayer une solution comme celle-ci:

    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
    
    while (resultat.next())            {
        dateNaiss = resultat.getString("date_naiss");
        button = new JButton ("date de naissance le : "+dateNaiss);
    
        button.setActionCommand(dateNaiss);
    
        button.addActionListener(this);
    pan.add(button);
     setContentPane(pan);
     }
    ...
    public void actionPerformed(ActionEvent e)
       { 
                String birthday =  ((JButton)e.getSource()).getActionCommand();
                String rekette ="SELECT nom_eleve FROM eleves WHERE date_naiss = "+"\""+birthday+"\"";
         ....
    
     }
    Attention: Code non testé.
    Note: evite de créer une nouvelle connexion pour chaque requête.
    Bouuuuuu ça ne marche pas....

Discussions similaires

  1. Fonction ne renvoyant aucun resultat
    Par GrimmJow95 dans le forum Prolog
    Réponses: 7
    Dernier message: 26/05/2009, 22h16
  2. [MySQL] $_POST ne me donne aucun resultat
    Par sinifer dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 12/05/2009, 10h18
  3. Recherche ne retourne aucun resultat
    Par ninou212212 dans le forum SharePoint
    Réponses: 1
    Dernier message: 23/10/2008, 09h32
  4. Jointure externe simple ne retourne aucun resultat
    Par youyoupapayou dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/09/2008, 11h13
  5. Natural Join aucun resultat
    Par Joeleclems dans le forum Outils
    Réponses: 4
    Dernier message: 23/01/2007, 16h18

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