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 :

Problème d'une JTree avec la base de données


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2013
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Problème d'une JTree avec la base de données
    Bonsoir tout le monde
    j'ai un problème avec une JTree quand elle se connecte à la base de données, mon application doit effectuer les taches suivantes :
    1. une ActionPerformed sur un bouton qui va appelé une méthode pour connecter à la base de données et effectuer la recherche de l'ensemble des série des images d'un examen.
    2. l'affichage de l'examen dans une JTree avec l'ensemble des séries trouvées et l'ensembles des images dans chaque série.

    mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {                                          
    try {
                         /*Appel d'une methode externe pour connecter à la base de données et effectuer la recherche */
                         d.chercherSerie2("SELECT * FROM serie  WHERE idExamen = "+f+"",jTable2, jLabel19,jTree1);
     
                    } catch (Exception ex) {
                        Logger.getLogger(ChercherExamen.class.getName()).log(Level.SEVERE, null, ex);
                    }

    et pour la méthode chercherSerie2 voila son 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
     
           public Serie chercherSerie2(String sql, JTable jTable2,JLabel jLabel16, JTree jTree1) throws Exception{
        try {
                        con =Connexion.getConnection();
                        st = con.createStatement(); 
                        System.out.println("connection avec succee");
                        ResultSet rs_serie = st.executeQuery(sql);
                        boolean f = rs_serie.next(); 
     
                         if (f==true)
                        {
     
                            s = new Serie(rs_serie.getInt("idSerie") ,rs_serie.getInt("idExamen"),rs_serie.getInt("idRadiologue"), rs_serie.getInt("nbrImage") ,rs_serie.getDate("dateStock") ,rs_serie.getInt("hStock"),rs_serie.getInt("mStock"));    
     
     
     
                            examen = new DefaultMutableTreeNode("Examen N° "+idexamen);
                            modell = new DefaultTreeModel(examen);
                            jTree1.setModel(modell);
                            jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
     
     
                        }
     
                          while (f==true) {
                                int idSerie = rs_serie.getInt("idSerie");
                                f = rs_serie.next();
                                /*  appel de la methode  'creationSerieJTree' pour créer l'ensemble des séries dans la JTree */
                                creationSerieJTree(idSerie,serie,examen);
     
                               /*  appel de la methode  'table' pour connecter à la base de données et chercher l'ensemble des images corespandantes a chaque série  de l'examen */
                                table(idSerie,serie,examen);
     
                            }
     
                        st.close();
                        rs_serie.close();
     
        } catch (SQLException e) {
                String nomClasse = "ChercherSerie";
                String nomMethode = "chercherSerie2";
                exp.sqlException(e,nomClasse,nomMethode);
        } catch (ClassNotFoundException e){
                System.out.println("echec de connection");
        }
        return s;
    }

    le code de la méthode table est le suivant :

    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
     
    public void table (int idSerie ,  DefaultMutableTreeNode serie,  DefaultMutableTreeNode examen){
     
                                // création des images dans la JTree :
                                try {
                                    con = Connexion.getConnection();
                                    Statement st3 = null ; 
                                    st3 = con.createStatement();
                                    ResultSet rss= null ;
                                    String sql1 = "SELECT * FROM image where idSerie = "+idSerie ;
     
                                    rss = st3.executeQuery(sql1);
                                    boolean f2 = rss.next();
     
                                    while (f2==true){
     
                                        f2 = rss.next();
                                         /*  appel de la methode  'creationImageJTree' pour créer l'ensemble des images dans la JTree */
                                        creationImageJTree(idImage,uid,serie,examen,extensionImg);
     
                                    }
                                } catch (ClassNotFoundException ex) {
                                    ex.printStackTrace();
                                } catch (SQLException ex) {
                                    ex.printStackTrace();
                                }
    }
    le code de la méthode creationImageJTree :
    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
     
     
    public void creationImageJTree (int idImage, String uid , DefaultMutableTreeNode serie,  DefaultMutableTreeNode examen, String extensionImg){
     
                    //Création des images :
     
     
                    DefaultMutableTreeNode image = examen;
                    image = new DefaultMutableTreeNode("Image N° "+idImage+"-"+uid+"."+extensionImg);
     
     
                    System.out.println("serie . to string : "+serie.toString());
                    serie.add(image);
                    System.out.println("la methode creationImageJTree : la création de l'image +++ étape 2");                 
                    modell.insertNodeInto(image, serie, serie.getChildCount()-1);
                    System.out.println("la methode creationImageJTree : la création de l'image +++ étape 3");                 
     
                    modell.nodeChanged(image); 
    }
    le probleme se pose au niveau de l'insertion de l'ensemble des images a la série existante, alors que la methode ne connait pas la variable serie malgré elle est bien déclarée !!!!!!!!!!

    et finalement lors de l'affichage de JTree :
    elle m'affiche : l'examen trouvée avec toujours une seul série (meme si l'examen contient plusieurs séries) et aucune image n'a été affichée avec la série

    Merci pour votre patience et votre aide

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    elle est créée ou l'instance de TreeNode pointée par la variable serie que tu passes en arguments ici (même remarque que pour la frame de ton autre post : elle suffit pas de déclarer une variable, il faut créer une instance et l'affecter dans cette variable avant de traiter la variable) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     /*  appel de la methode  'creationSerieJTree' pour créer l'ensemble des séries dans la JTree */
    creationSerieJTree(idSerie,serie,examen);
     
    /*  appel de la methode  'table' pour connecter à la base de données et chercher l'ensemble des images corespandantes a chaque série  de l'examen */
    table(idSerie,serie,examen);
    A noter par ailleurs que quand tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    boolean f2 = rss.next();
     
    while (f2==true){
     
       f2 = rss.next();
       /*  appel de la methode  'creationImageJTree' pour créer l'ensemble des images dans la JTree */
     
       creationImageJTree(idImage,uid,serie,examen,extensionImg);
     
    }
    tu lis un premier record puis tu entres dans la boucle, et tu lis tout de suite un nouveau record : donc le premier saute. mais de toute manière comme tu ne lis rien dans ce record, ça plante pas, mais pourquoi lire des données dans une DB et les ignorer ensuite : tu ne devrais pas lire idImage dans ton record des fois ?

    Plus ou moins même remarques dans l'autre boucle de lecture...

    En général, une boucle de lecture de record résultat d'un SELECT c'est quelque chose comme ça :

    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    123456789
    boolean f2 = rss.next(); // lecture premier enregistrement
     
    while (f2) { // tant qu'on a un enregistrement lu...
    
       // traitement de l'enregistrement lu ici
     
       f2 = rss.next(); // lecture enregistrement suivant
       
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2013
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup Joel, c'est résolu
    tu a raison concernant la variable serie mais le brobleme c'est que la methode creationSerieJTree doit retourner la valeur de cette dernière et j'ai oubliée de metre un return , finalement j'ai modifiée le code de la methode creationSerieJTree de la façon suivante et sa marche très bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public DefaultMutableTreeNode creationSerieJTree (int idserie,DefaultMutableTreeNode serie,  DefaultMutableTreeNode examen){
     
                    //Création des séries :
                    serie = examen;
     
                    serie = new DefaultMutableTreeNode("Série N° "+idserie);                
                    examen.add(serie);
                    modell.insertNodeInto(serie, examen, examen.getChildCount()-1);                
                    modell.nodeChanged(serie);
                    return serie; 
    }
    et bien sur j'ai modifiée la ligne suivante dans la methode chercherSerie2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                                this.serie = creationSerieJTree(idSerie,serie,examen);

    Merci une autre fois Joel

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par nassima_1418 Voir le message
    Merci beaucoup Joel, c'est résolu
    tu a raison concernant la variable serie mais le brobleme c'est que la methode creationSerieJTree doit retourner la valeur de cette dernière et j'ai oubliée de metre un return , finalement j'ai modifiée le code de la methode creationSerieJTree de la façon suivante et sa marche très bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public DefaultMutableTreeNode creationSerieJTree (int idserie,DefaultMutableTreeNode serie,  DefaultMutableTreeNode examen){
     
                    //Création des séries :
                    serie = examen;
     
                    serie = new DefaultMutableTreeNode("Série N° "+idserie);                
                    examen.add(serie);
                    modell.insertNodeInto(serie, examen, examen.getChildCount()-1);                
                    modell.nodeChanged(serie);
                    return serie; 
    }
    et bien sur j'ai modifiée la ligne suivante dans la methode chercherSerie2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                                this.serie = creationSerieJTree(idSerie,serie,examen);

    Merci une autre fois Joel
    Pas de quoi... Je me doutais bien d'un truc dans le genre.

    Par contre ta ligne ne sert à rien... tu peux la supprimer.

    De même que tu peux supprimer le paramètre serie de ta méthode... puisque que sa valeur passé en argument (qui doit être null) n'est jamais utilisée.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2013
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Tu a raison une autre fois Joel, merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/12/2013, 10h20
  2. Réponses: 1
    Dernier message: 23/09/2013, 15h51
  3. Réponses: 0
    Dernier message: 11/06/2013, 17h30
  4. [MySQL] Problème avec les accent lors d'une recherche dans ma base de donnée
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/06/2009, 14h08
  5. Réponses: 1
    Dernier message: 05/06/2008, 15h04

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