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

Collection et Stream Java Discussion :

Problème d'affichage d'une requête SQL dans un tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut Problème d'affichage d'une requête SQL dans un tableau
    Bonjour,
    Je suis étudiant en informatique et pour la fin d'année je doit faire 5 aplication en langage de programmation.
    Je fais une vidéothèque mais je n'arrive pas a afficher correctement dans un tableau ce que me récupère une requête SQL avec une base de donnée PosgreSQL. La requête est correcte mais lorsque je veux l'afficher dans la fenêtre seule 1 ligne est affichée.
    J'utilise donc PosgreSQL pour la base et NetBeans pour faire la partie graphique.

    voici le 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
     
    try 
            {			
                    String url = "jdbc:postgresql://localhost:5432/videotheque";
                    String user = "postgres";
                    String passwd = "titi30501";
     
                    Connection conn = DriverManager.getConnection(url, user, passwd);
     
                    //création d'un objet Statement pour le nombre de film
                     Statement statenb = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
                    //On compte le nombre de film
                    String query1 = "SELECT COUNT(id_film) AS nbfilm FROM Film";			
                    ResultSet result = statenb.executeQuery(query1);
                    result.first();
                    System.out.println(""+result.getInt("nbfilm")+"");
                    int nbfilm =result.getInt("nbfilm");
     
     
                     //création d'un objet Statement pour la liste des films
                        Statement state = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
                        //On va chercher tous les film pour les afficher
                        String query = "SELECT * FROM Film ORDER BY id_film";			
                        ResultSet res = state.executeQuery(query);
                        res.first();
     
                        //Les titres des colonnes
                        String  title[] = {"idfilm", "Nom", "Realisateur", "acteur principal", "genre", "Commentaire"};
                        //on insère les données dans un tableau
                        Object[][] data = {{""+res.getString("id_film")+"", ""+res.getString("nom_film")+"", ""+res.getString("realisateur")+"", ""+res.getString("acteur")+"", ""+res.getString("genre")+"", ""+res.getString("commentaire")+""}};
     
     
                        JTable tableau = new JTable(data, title);
     
                        //On ajoute notre tableau à notre contentPane dans un scroll
                        //Sinon les titres des colonnes ne s'afficheront pas ! !	
                        this.getContentPane().add(new JScrollPane(tableau));
                        this.setLocationRelativeTo(null);
                        this.setTitle("JTable");
                        System.out.println(data);
     
                    /*   
                    for(int i=1;i<=nbfilm;i++)
                    {
                       
                    }*/
     
     
            }
            catch (Exception e) 
            {
                e.printStackTrace();
            }
    Je n'arrive pas a faire fonctionner le "for" pour tout afficher cela ne change rien une seule ligne s'affiche. Cela fait 1 mois que je travaille dessus en vain. J'ai besoin d'aide (avant le 4 mars si possible).

    Merci d'avance.

    PS : je peux fournir d'autre parties de code si besoin est.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Bonjour,

    Citation Envoyé par seremei Voir le message
    Je n'arrive pas a faire fonctionner le "for" pour tout afficher cela ne change rien une seule ligne s'affiche.
    C'est normal. D'après ce que je lis dans ton code, tu ne récupères que le premier résultat de ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ResultSet result = statenb.executeQuery(query1);
    result.first();
    Mako.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Si tu ne fais pas de boucle sur le ResultSet, tu ne récupéreras qu'un nombre fixe de lignes. (Ici je ne te vois en récupérer qu'une.)

    Si tu n'appelles pas next() sur le ResultSet, alors tu sais que ce ResultSet ne lit jamais autre chose que la première ligne.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Merci de vos réponse, mais après modification de mon code avec votre aide voici ce que j’obtiens :

    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
     
     //création d'un objet Statement pour la liste des films
                        Statement state = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
                        //On va chercher tous les film pour les afficher
                        String query = "SELECT * FROM Film ORDER BY id_film";			
                        ResultSet res = state.executeQuery(query);
                        //res.first();
                        //Les titres des colonnes
                        String  title[] = {"idfilm", "Nom", "Realisateur", "acteur principal", "genre", "Commentaire"};
     
                        while(res.next()){
                            String id = res.getString(1);
                            String nom = res.getString(2);
                            String realisateur = res.getString(3);
                            String acteur = res.getString(4);
                            String genre = res.getString(5);
                            String commentaire = res.getString(6);
     
                           //on insère les données dans un tableau
                            Object[][] data = {{""+id+"", ""+nom+"", ""+realisateur+"", ""+acteur+"", ""+genre+"", ""+commentaire+""}};
                            JTable tableau = new JTable(data, title);
                            this.getContentPane().add(new JScrollPane(tableau));
                            //System.out.println(id+" "+nom+" "+realisateur+" "+acteur+" "+genre+" "+commentaire+".");
                        }
    Le System.out.println fonctionne, je récupère bien toute les lignes mais avec la matrice data seule 1 ligne s'affiche soit la première soit la dernière.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Bonjour,

    Citation Envoyé par seremei Voir le message
    Le System.out.println fonctionne, je récupère bien toute les lignes mais avec la matrice data seule 1 ligne s'affiche soit la première soit la dernière.
    Le problème est que, à chaque itération, tu créés un nouveau Object[][], ainsi qu'une nouvelle JTable. Si j'ai bien compris ce que tu veux faire, il vaudrait mieux n'avoir qu'une seule JTable, et lui ajouter les données complètes (donc ne pas créer un nouveau tableau à chaque itération).

    Mako.

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    C'est exact,

    Il faudrait que tu déclares ta JTable soit avant, soit après la boucle. Ce que tu peux faire faire c'est :

    - exetuter la requete
    - obtenir les dimensions du resultset
    - contruire ton tableau en fonction des dimensions
    - parcourir le resultset pour insérer les données dans le tableau
    - construire la JTable avec le tableau

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Le problème est que lorsque je sort mon JTable et ma matrice data de la boucle il me met des erreur car il ne "connais pas" ce qui est dans le while.


    J'ai compris ce que vous voulez me dire mais là je pense avoir besoin d'un petit morceau de code pour me débloquer même si il n'est pas complet j'en serais très reconnaissant.

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Montrez ce que vous faites et où se trouve le problème svp

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    ici je récupère le nombre de films dans ma base de donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //création d'un objet Statement pour le nombre de film
                     Statement statenb = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
                    //On compte le nombre de film
                    String query1 = "SELECT COUNT(id_film) AS nbfilm FROM Film";			
                    ResultSet result = statenb.executeQuery(query1);
                    result.next();
                    System.out.println(""+result.getInt("nbfilm")+"");
                    int nbfilm =result.getInt("nbfilm");
    jusqu'ici pas de problème.
    Dans la partie suivante j'aimerai afficher dans ma fenêtre un tableau films avec ce que me récupère la requête (query) :
    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
     
    //création d'un objet Statement pour la liste des films
                        Statement state = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
                        //On va chercher tous les film pour les afficher
                        String query = "SELECT * FROM Film ORDER BY id_film";			
                        ResultSet res = state.executeQuery(query);
                        //res.first();
                        //Les titres des colonnes
                        String  title[] = {"idfilm", "Nom", "Realisateur", "acteur principal", "genre", "Commentaire"};
     
                        while(res.next()){
                            String id = res.getString(1);
                            String nom = res.getString(2);
                            String realisateur = res.getString(3);
                            String acteur = res.getString(4);
                            String genre = res.getString(5);
                            String commentaire = res.getString(6);
     
                           //on insère les données dans un tableau
                           for(int i=0; i<nbfilm;i++){
                            String films[][] = {{""+id+"", ""+nom+"", ""+realisateur+"", ""+acteur+"", ""+genre+"", ""+commentaire+""}};
                            res.next();
                            }
                            //System.out.println(id+" "+nom+" "+realisateur+" "+acteur+" "+genre+" "+commentaire+".");
                        }
                        JTable films = new JTable();
                         this.getContentPane().add(new JScrollPane(films));
    Mon problème dans ce code c'est que je suis pas capable d'afficher le tableau. J'avais une matrice data :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Object[][] data = {{""+id+"", ""+nom+"", ""+realisateur+"", ""+acteur+"", ""+genre+"", ""+commentaire+""}};
    JTable tableau = new JTable(data, title);
    this.getContentPane().add(new JScrollPane(tableau));
    qui n'affichait qu'une seule ligne. J'ai essayé de mettre la matrice dans le while mais voilà le problème à été dit cela m'en créai une nouvelle à chaque passage de la boucle donc une seule ligne.

    Je pense avoir bien résumé la situation.

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Effectivement, il y a des choses qui ne vont pas du tout :

    Pour commencer, même si ce n'est pas le plus important :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //création d'un objet Statement pour le nombre de film
                     Statement statenb = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
                    //On compte le nombre de film
                    String query1 = "SELECT COUNT(id_film) AS nbfilm FROM Film";			
                    ResultSet result = statenb.executeQuery(query1);
                    result.next();
                    System.out.println(""+result.getInt("nbfilm")+"");
                    int nbfilm =result.getInt("nbfilm");
    Cette étape est à éviter.
    1 - Il y a plus simple
    2 - et surtout 2 - Vous risquez de faire une lecture imporpre. Dans votre cas ça peut ne pas être génant, mais imaginez que quelqu'un entre le comptage et la selection qui suit quelqu'un insère des données. --> OutOfBoundsException

    Ensuite, et c'est le plus gros problème :

    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
    while(res.next()){
                            String id = res.getString(1);
                            String nom = res.getString(2);
                            String realisateur = res.getString(3);
                            String acteur = res.getString(4);
                            String genre = res.getString(5);
                            String commentaire = res.getString(6);
     
                           //on insère les données dans un tableau
                           for(int i=0; i<nbfilm;i++){
                            String films[][] = {{""+id+"", ""+nom+"", ""+realisateur+"", ""+acteur+"", ""+genre+"", ""+commentaire+""}};
                            res.next();
                            }
                            //System.out.println(id+" "+nom+" "+realisateur+" "+acteur+" "+genre+" "+commentaire+".");
                        }
    while(res.next()) : permet de lire chaque ligne. res.next(), déplace le curseur.
    Or !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0; i<nbfilm;i++){
                            String films[][] = {{""+id+"", ""+nom+"", ""+realisateur+"", ""+acteur+"", ""+genre+"", ""+commentaire+""}};
                            res.next();
                            }
    A la lecture de chaque ligne vous faite déplacer le curseur à la ligne suivante le même nombre de fois que vous avez de colonne. Vous avez de grandes chance de déplacer et le Resultset doit râler car il dépasse !

    Petite solution :

    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
     
    //création d'un objet Statement pour la liste des films
    Statement state = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
    ResultSet.CONCUR_READ_ONLY);
     
     
    //On va chercher tous les film pour les afficher
    String query = "SELECT * FROM Film ORDER BY id_film";			
     
    ResultSet res = state.executeQuery(query);
    //res.last();//on va à la dernière ligne
    int nbLignes = res.getRow(),//donne la ligne courante
    compteurDeLignes = 0;
     
    res.first()//on se replace à la première ligne
     
    //Les titres des colonnes
     String  title[] = {"idfilm", "Nom", "Realisateur", "acteur principal", "genre", "Commentaire"};
     
    Object [][] data = new Object[nbLignes][title.length];//on va stocker nos données dedans
     
    while(res.next()){
       //on insère les données dans un tableau
       for(int i=0; i<title.length;i++){//attention que la taille du tableau java coincide bien avec le nombre de colonnes lues dans la table
          data[compteurDeLigne][i] = res.get(i);
          //System.out.println(getString(i));
       }
       compteurDeLignes++;
    }
     
    JTable films = new JTable(data, title);
    this.getContentPane().add(new JScrollPane(films));
    je n'ai pas fais de java depuis quelques temps et j'ai un doute sur l'ordre pour donner les indices dans les tableaux mais l'idée est là
    Ensuite, si tu veux faire travailler ta JTable, tu as intérêt d'utiliser les modèle. (Faire une classe qui hérite de AbstractTableModel)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Merci de votre aide mais encore une dernière chose, qu'est ce qu'une OutOfBoundsException ?
    La fenêtre qui s'ouvre n'affiche rien même pas le titre des colonnes et NetBeans me met cela en message d'erreur :
    java.lang.ArrayIndexOutOfBoundsException: 0
    at Fenetre.<init>(Fenetre.java:46)
    at videothèque.jButton4ActionPerformed(videothèque.java:136)
    at videothèque.access$300(videothèque.java:22)
    at videothèque$4.actionPerformed(videothèque.java:78)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6504)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6269)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4860)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2713)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:680)
    at java.awt.EventQueue$4.run(EventQueue.java:678)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    et là, mois je comprend plus rien de ce que me dit NetBeans. De plus je ne sais pas comment régler cela.

  12. #12
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par seremei Voir le message
    Merci de votre aide mais encore une dernière chose, qu'est ce qu'une OutOfBoundsException ?
    Un "OutOfBoundException signifie que tu essayes d'accéder à un élément en dehors d'une liste ou un tableau.

    En l'occurence ici, "java.lang.ArrayIndexOutOfBoundsException: 0" signifie que ton programme n'a pas pu accéder à l'élément 0 de ta liste ou de ton tableau (donc qu'il/elle est vide).
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  13. #13
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Qu'y a-t-il dans le constructeur de Fenetre à la ligne 46 ?

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    la ligne 46 c'est ce qu'il y a dans ma boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    45                       for(int i=0; i<title.length;i++){
    46                          data[compteurDeLigne][i] = res.getString(i);
    47                          //System.out.println(getString(i));
    48                       }
    ...
    ...

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    la ligne 46 c'est ce qu'il y a dans ma boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    45                       for(int i=0; i<title.length;i++){
    46                          data[compteurDeLigne][i] = res.getString(i);
    47                          //System.out.println(getString(i));
    48                       }

  16. #16
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Ton tableau n'est pas construit. As-tu à un moment quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    data = new Object[unInt][unAutreInt];
    ?

    SI c'est le cas, c'est que une ou les deux valeurs valent 0.

    Car cette erreur est en fait, signifie qu'à l'index 0 (ici je crois que i et compteurDeLigne valent 0) tu cherches à insérer une valeur.

    Controle la taille du tableau pour voir avant la boucle for

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    J'ai fais des test toutes la journée mais toujours rien.
    voilà 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
     
    //On va chercher tous les film pour les afficher
                        String query = "SELECT * FROM Film ORDER BY id_film";			
     
                        ResultSet res = state.executeQuery(query);
                        //res.last();//on va à la dernière ligne
                        int nbLignes = res.getRow(), //donne la ligne courante
                        compteurDeLignes = 0;
     
                        res.first();//on se replace à la première ligne
     
                        //Les titres des colonnes
                        String  title[] = {"idfilm", "Nom", "Realisateur", "acteur principal", "genre", "Commentaire"};
     
                        Object [][] data = new Object[nbLignes][title.length];//on va stocker nos données dedans
     
                        JTable films = new JTable(data, title);
                        while(res.next()){
                           //on insère les données dans un tableau
                           for(int i=0; i<title.length;i++){
                              data[compteurDeLigne][i] = res.getString(i);
                              //System.out.println(getString(i));
                           }
                        }

  18. #18
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    J'ai fais une petite erreur :

    Il ne faut pas le mettre en commentaire.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Encore un dernier problème. Après avoir remis le
    Il me met l'erreur : indice de colonne hors limite : 0, nombre de colonne 6. Je croyais que les indice de colonnes de tableau commençais à 0 ?
    Si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while(res.next()){
                           //on insère les données dans un tableau
                           for(int i=1; i<title.length; i++){
                               System.out.println(i);
                               data[compteurDeLigne][i] = res.getString(i);
                               //System.out.println(getString(i));
                           }
                        }
    Dans ma fenêtre s'affiche bien le tableau avec la dernière ligne seulement et en décalé au niveau des colonnes, je suis un peu perdu.

  20. #20
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Pour un Resultset, on commence à compter à partir de 1. Un Resultset n'est pas un tableau

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Affichage d'une requête SQL dans un fichier texte
    Par EL.FARAJI dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 11/04/2011, 15h23
  2. [PHP 5.2] Affichage du résultat d'une requête SQL dans un tableau indenté
    Par ratatam25 dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2009, 16h50
  3. [SQL] affichage d'une requête sql dans un tableau
    Par benvegu dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/02/2008, 14h01
  4. Réponses: 15
    Dernier message: 11/05/2007, 15h28
  5. [MySQL] Passer une requête SQL dans un tableau
    Par phpaide dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 02/05/2006, 11h09

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