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 :

[Debutant-Tableau] Recuperation Valeur


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Par défaut [Debutant-Tableau] Recuperation Valeur
    Bonjour

    J'essaye d'afficher le résultat d'un recordset mais à chaque fois ce message d'erreur

    Exception in thread "main" java.lang.NullPointerException
    at xxx.FenList.<init>(FenList.java:50)
    at xxx.FenGene.<init>(FenGene.java:56)
    at xxx.Main.main(Main.java:97)


    Alors :
    xxx.FenList
    Est la Classe qui récupère les valeurs du tableau pour faire l'affichage des résultats dans une boucle.
    while (i < Main.nbl)
    {
    chp1 = new JTextField("Voici une Ligne du tableau : " + i + " - " + Main.Ars[i]);
    bVert.add(chp1);
    validate();
    i++;
    }


    xxx.FenGene
    Est la Classe qui structure mon affichage écran et qui permet d'afficher FenList dans un endroit précis
    j'y crée un GridBagLayout()contenant en autre FenList qui est un javax.swing.JPanel

    xxx.Main
    Est la Classe princiale
    J'y crée une connexion sur ma base MySql et j'y récupère mon résultat
    conn = DriverManager.getConnection(url,login,password);
    rs = conn.createStatement().executeQuery("SELECT a, b, c, count(c) FROM tab group by a, b, c with rollup");


    J'y declare un tableau (Débutant je connais pas trop)
    public static String ars[] ;

    rs.last();
    rsl = rs.getRow();
    String ars[] = new String[rsl];


    Puis dans une boucle j'affecte mon resultset a mon tableau
    rs.first();
    while (rs.next())
    {
    ars[i]= rs.getString(1) + "-" + rs.getString(2) + "-" + rs.getString(3) + "-" + rs.getString(4);
    i++;
    }


    J'ai vérifié en faisant un System.out.println(ars[i]) que je le transfert se faisait bien et que j'avais les champs remplis. Ce qui est le cas.

    Je ne comprend pas ou cela coince.

    Et surtout comment faire pour créer un tableau récupérant les résultats d'une requête dans une Classe afin de le transférer dans la Classe chargée de l'affichage et la mise en forme.

    Si quelqu'un pouvait me montrer mon erreur merci

    Phil

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    J'ai pas tout lu car sans les balises de code c'est pas vraiment lisible ...

    quelle est la ligne 50 du fichier FenList.java

    A priori tu essaie d'accéder à un objet qui est null (non initialisé).

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String[] tab = null;
     
    // provoque un null pointer à cette ligne
    // System.out.print(tab.length)
     
    // il faut l'initialiser d'abord
    tab = new String[0];
    System.out.print(tab.length)

  3. #3
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    bonjour,

    Difficile de te répondre comme ca Pourrais tu poster un code un peu plus clair (et surtout ton main vu que c'est la que l'exception est lever ?)
    Plus tu donneras d'information plus nous serons en mesure de t'aider.

    a +
    PS : pense aux balises [ CODE]....[ /CODE]

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Par défaut
    Dsl je vais mettre le code en entier en espérant que cela soit plus simple.
    Dans l'absolu je comprend que j'ai un problème d'initialisation de mon tableau chargé de récupérer les données de ma requête.
    Mais je ne comprend pas pourquoi car la console affiche correctement la requete et dans Matisse quand j'ecris dans le fichier FenList.java la ligne sensée m'afficher le contenu du tableau. J'accède bien à mon tableau ars[]

    Pour répondre a IN voici la ligne 50 dans FenList.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chp1 = new JTextField("Voici une Ligne du tableau : " + i + " - "+ Main.ars[i]);
    Voici maintenant les 3 fichiers. Je suis en phase d'apprentissage, donc c'est encore un peu brouillon dans les structure des Classe....

    Mon Main.java
    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
    package NCCSIGBW;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import javax.swing.JFrame;
     
    public class Main 
    {
        public static String ars[] ;
        public static int nbl, i, rsl;
        public static java.sql.ResultSet rs;
        public static String VarCh1;
     
        public static void main(String[] args) throws SQLException, ClassNotFoundException 
        {
            Class.forName("com.mysql.jdbc.Driver");
     
            //Definition Info Connexion
            String url = "jdbc:mysql://#.#.#.#";
            String login = "#";
            String password = "#";
            Connection conn = null;
     
            //Etablissement  de la connexion avec SGBDD
            try 
            {
                 conn = DriverManager.getConnection(url,login,password);
                 rs = conn.createStatement().executeQuery("SELECT jour, client, tbadg, count(tbadg) FROM operation group by jour, client, tbadg with rollup");
     
                i = 0;
                rs.last();
                rsl = rs.getRow();
                String ars[] = new String[rsl];
                rs.first();
                while (rs.next())
                {
                    ars[i]= rs.getString(1) + "-" + rs.getString(2) + "-" +  rs.getString(3) + "-" + rs.getString(4);
                    i++;
                }
                nbl = i;
                i = 0;
                while (i <= nbl)
                {
                    //Juste pour verifier dans la console 
                    System.out.println(ars[i]);  
                    i++;
                }
     
             }
     
            //Retour Si Erreur de connexion
            catch (SQLException bill) 
            {
            // handle any errors
                System.out.println("SQLException: " + bill.getMessage());
                System.out.println("SQLState: " + bill.getSQLState());
                System.out.println("VendorError: " + bill.getErrorCode());
            }
     
            catch(Exception e)
            {
               System.out.println("Autre erreur : ");
               e.printStackTrace();
            }
     
            //Fermer la connexion
            finally
            {
               if(conn!=null)
               {try
                {
                    conn.close();
                }
                catch(Exception e)
                {e.printStackTrace();}
               }
            }
                    JFrame Fen = new FenGene();
                    Fen.setVisible(true);
            }
       }
    Voici FenGene.java Qui Structure mon Affichage
    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
    package NCCSIGBW;
     
    import java.sql.SQLException;
    import javax.swing.*;
    import java.awt.*;
     
    public class FenGene extends JFrame
    {
        //Variable MEF 
        public static int x[] = {0, 0, 0, 1, 2};
        public static int y[] = {0, 1, 2, 2, 2};
        public static int l[] = {3, 3, 1, 1, 1};
        public static int h[] = {1, 1, 1, 1, 1};
        public static int px[] = {0, 0, 70, 5, 25};
        public static int py[] = {20, 5, 75, 0, 0};
     
        public FenGene() throws SQLException
        {
            //Defenition  Generales
            setTitle ("SIGBW BADGING");
            setSize ( 500, 300);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            //MEF GRILLE Fenetre
            Container contenu = getContentPane();
            GridBagLayout g = new GridBagLayout();
            contenu.setLayout(g);
            GridBagConstraints c = new GridBagConstraints();
            c.fill = GridBagConstraints.BOTH;
     
            //REMPLISSAGE DE LA GRILLE 
            for ( int i = 0; i < x.length; i++)
            {
                c.gridx=x[i];
                c.gridy=y[i];
                c.gridwidth=l[i];
                c.gridheight=h[i];
                c.weightx=px[i];
                c.weighty=py[i];
                if ( i == 0)
                {
                    //contenu.add(new JButton ("Filtre"), c);
                    contenu.add(new FenFilt(), c);
                }
                if ( i == 2)
                {
                    contenu.add(new FenList(), c);
                    //contenu.add(new PanelList(), c);
                }
                if ( i == 4)
                {
                     contenu.add(new FenDet(), c);
                }
            }
        }
    }
    Et enfin FenList.java Qui est l'affichage pour mes résultats de Requête
    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
    package NCCSIGBW;
     
    import java.sql.SQLException;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class FenList extends javax.swing.JPanel 
    {
        public JPanel panfl;
        public JTextField chp1;
        public JTable TabList;
        private int i;
        private Box bVert;
        private JScrollPane defil;
     
        public FenList() throws SQLException
        {
                i = 0;
                setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));
                    bVert = Box.createVerticalBox();
                    add(bVert);
                    defil = new JScrollPane(bVert);
                    add(defil);
                    chp1 = new JTextField();
                    chp1.setEditable(false);
                    chp1.setText(Main.VarCh1);
                    bVert.add(chp1);
                    bVert.add(Box.createVerticalStrut(10));
                    chp1 = new JTextField("Il y a " + Main.nbl + " lignes visualisables");
                    bVert.add(chp1);
                    validate();
                    while (i < Main.nbl)
                    {
                            chp1 = new JTextField("Voici une Ligne du tableau : " + i + " - "+ Main.ars[i]);
                            bVert.add(chp1);
                            validate();
                            i++;
                    }
        }
    Java c'est complexe mais je l'aurais

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    la variable statique Main.ars n'est pas définie.

    en fait, tu as Main.ars (non-défini) et Main.main.ars (variable interne de main(String[] args)).

    Je te conseille de supprimer le String[] avant ars = ...; pour que cela fonctionne.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Par défaut
    Salut dingoth

    Merci pour ton aide cela fonctionne bien. Même si je l'avoue je ne comprend pas encore trés bien pourquoi. Mais je saurais !! Et je vais faire plus attention aux déclarations

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

Discussions similaires

  1. [debutant]Comment recuperer la valeur d'un champ de texte?
    Par thenightmare1985 dans le forum Forms
    Réponses: 4
    Dernier message: 07/01/2008, 17h17
  2. [Debutant][Système]Récupérer la valeur des variables systeme
    Par cameleon2002 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/02/2007, 09h57
  3. [C#][Débutant] Comment récuperer une valeur d'une requete sql
    Par Cazaux-Moutou-Philippe dans le forum Accès aux données
    Réponses: 2
    Dernier message: 12/05/2006, 01h45
  4. [Tableaux] recuperation valeurs dun tableau ou d'un array
    Par pascale86 dans le forum Langage
    Réponses: 5
    Dernier message: 11/10/2005, 16h14
  5. [sgbd] Recuperer valeurs d'un Select dans un tableau
    Par Mu_Belier dans le forum SGBD
    Réponses: 16
    Dernier message: 27/05/2005, 15h46

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