Bonjour,
je viens vers vous car mon code lève une exception et malgré mes recherches, je ne trouves pas la solution.
Voilà, j'ai un pop up qui doit faire appelle à ma classe Dao pour obtenir une liste d'objet à mettre dans une JList.
Voici le code de mon pop-up
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 package be.retrocollection.popup.www; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.List; import javax.swing.*; import be.retrocollection.connexion.www.Connect; import be.retrocollection.dao.www.*; import be.retrocollection.pojo.www.*; public class EditeurDialog extends JDialog implements ActionListener{ private Container content; private JPanel panel; private GridBagLayout gbLayout; private GridBagConstraints gbConstraint; private JLabel labelPays,labelImage,labelNom,icone; private JTextField txtImage,txtNom; private JButton btnValider,btnAnnuler,btnAjouterImage; private PojoEditeur pojoEditeur; private JComboBox cmbListePays; private JList editeurList; private DefaultListModel editeurListModel; public EditeurDialog(JFrame parent, String title, boolean modal) { super(parent, title, modal); pojoEditeur = new PojoEditeur(); init(); } public EditeurDialog(JFrame parent, String title, boolean modal,PojoEditeur pojo) { super(parent, title, modal); pojoEditeur = pojo; init(); } private void init() { content = getContentPane(); panel = new JPanel(); gbLayout = new GridBagLayout(); gbConstraint = new GridBagConstraints(); panel.setLayout(gbLayout); labelNom = new JLabel("Nom : "); labelPays= new JLabel("Pays : "); labelImage= new JLabel("Logo : "); cmbListePays = new JComboBox(); txtNom = new JTextField(15); txtImage = new JTextField(15); btnValider = new JButton("Insérer"); btnAnnuler = new JButton("Annuler"); btnAjouterImage = new JButton("..."); btnValider.addActionListener(this); btnAnnuler.addActionListener(this); createJList(); ajouterComposant(editeurList, 0, 0, 1, 5); ajouterComposant(labelNom, 0, 1, 2, 1); ajouterComposant(txtNom, 0, 4, 7, 1); ajouterComposant(labelPays, 1, 1, 2, 1); ajouterComposant(cmbListePays, 1, 4, 6, 1); ajouterComposant(labelImage, 2, 1, 2, 1); ajouterComposant(txtImage, 2, 4, 6, 1); ajouterComposant(btnAjouterImage, 2, 11, 1, 1); ajouterComposant(btnValider, 4, 4, 1, 1); ajouterComposant(btnAnnuler, 4, 5, 1, 1); content.add(panel); this.setSize(400,200); this.setLocationRelativeTo(null); this.setResizable(false); this.setVisible(true); } private void ajouterComposant(Component composant, int ligne, int colonne, int largeur, int hauteur) { gbConstraint.gridx = colonne; gbConstraint.gridy = ligne; gbConstraint.gridwidth = largeur; gbConstraint.gridheight = hauteur; gbConstraint.insets = new Insets( 3, 3, 3, 3); gbLayout.setConstraints(composant, gbConstraint); panel.add(composant, gbConstraint); } private void createJList() { AbstractDao<PojoEditeur> editeurDao = new EditeurDao(Connect.getInstance()); editeurListModel = new DefaultListModel(); List<PojoEditeur> listEditeur = new ArrayList<PojoEditeur>(); listEditeur = editeurDao.selectAll(); for(PojoEditeur editeur : listEditeur) { editeurListModel.addElement(editeur.getNom()); } editeurList = new JList(editeurListModel); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource() == btnAnnuler) { setVisible(false); } } }
voici ma classe DAO
et voici la classe mère de ma classe Dao (afin d'être complet)
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 package be.retrocollection.dao.www; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import be.retrocollection.connexion.www.Connect; import be.retrocollection.pojo.www.PojoEditeur; public class EditeurDao extends AbstractDao<PojoEditeur> { public EditeurDao(Connection connection) { super(connection); } @Override public boolean insertUpdate(PojoEditeur obj) { try { if(obj.getId() == 0) { String requete = prop.getProperty("editeur.create()"); PreparedStatement prepare = connect.prepareStatement(requete); // Bind des paramètres prepare.setString(1, obj.getNom()); prepare.executeUpdate(); prepare.close(); } else { String requete = prop.getProperty("editeur.update()"); PreparedStatement prepare = Connect.getInstance().prepareStatement(requete); prepare.setString(2, obj.getNom()); prepare.setInt(4, obj.getId()); prepare.executeUpdate(); prepare.close(); } return true; } catch (SQLException e) { e.printStackTrace(); return false; } } @Override public boolean delete(PojoEditeur obj) { String requete = prop.getProperty("editeur.delete()"); try { PreparedStatement prepare = Connect.getInstance().prepareStatement(requete); prepare.setInt(1, obj.getId()); prepare.executeUpdate(); prepare.close(); return true; } catch (SQLException e){ e.printStackTrace(); return false; } } @Override public PojoEditeur find(int id) { PojoEditeur editeur = null; String requete = prop.getProperty("editeur.find()"); try { PreparedStatement prepare = Connect.getInstance().prepareStatement(requete); prepare.setInt(1, id); ResultSet resultat = prepare.executeQuery(); while(resultat.next()) { // Création du PojoClient editeur = new PojoEditeur(resultat.getInt("id"),resultat.getString("nom")); } prepare.close(); resultat.close(); } catch(SQLException e) { e.printStackTrace(); } return editeur; } @Override public List<PojoEditeur> selectAll() { String requete = prop.getProperty("editeur.selectAll()"); List<PojoEditeur> listeEditeur = new ArrayList<PojoEditeur>(); PreparedStatement prepare; try { prepare = connect.prepareStatement(requete); ResultSet resultat = prepare.executeQuery(); while(resultat.next()) { listeEditeur.add(new PojoEditeur(resultat.getInt("id"), resultat.getString("nom"))); } prepare.close(); } catch (SQLException e){ e.getSQLState(); } return listeEditeur; } }
Quand je run mon code, tout marche bien jusque l'affichage du pop up ou il met met l'exception suivante:
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 package be.retrocollection.dao.www; import java.io.*; import java.sql.*; import java.util.*; /** * Classe abstraite de DAO permettant l'héritage * Cette classe aide à l'implémentation du Design Pattern DAO * @author Yohan * * @param <T> Paramètre représentant le pojo que la classe doit traiter */ public abstract class AbstractDao<T> implements IDao { /** * Attribut de connexion à la base de donnée */ protected Connection connect = null; /** * Fichier properties */ protected Properties prop; /** * Constructeur par défaut * @param connection Attributs de connexion à la base de données */ public AbstractDao(Connection connection) { this.connect = connection; initProperties(); } /** * Méthode d'initialisation du fichier de propriétés */ public void initProperties() { prop = new Properties(); FileInputStream in; try { in = new FileInputStream("src/requete.properties"); prop.load(in); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * Méthode permettant d'insérer ou d'updater un objet T * @param obj Pojo a inserer * @return true ou false en fonction de la reussite / eche de l'insertion */ public abstract boolean insertUpdate (T obj); /** * Méthode permettant de supprimer un objet T * @param obj Pojo a supprimer * @return true ou false en fonction de la reussite / eche de la suppression */ public abstract boolean delete (T obj); /** * Méthode permettant d'updater un objet T * @param obj Pojo a updater * @return true ou false en fonction de la reussite / eche de l'update */ public abstract T find(int id); /** * Méthode permettant de trouver le dernier Id présent dans la BDD */ public abstract List<T> selectAll(); }
La ligne 95 correspond à l'appelle prepare = Connect.PrepareStatement(requete);
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 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at be.retrocollection.dao.www.EditeurDao.selectAll(EditeurDao.java:95) at be.retrocollection.popup.www.EditeurDialog.createJList(EditeurDialog.java:96) at be.retrocollection.popup.www.EditeurDialog.init(EditeurDialog.java:57) at be.retrocollection.popup.www.EditeurDialog.<init>(EditeurDialog.java:31) at be.retrocollection.gui.www.BarreMenu.actionPerformed(BarreMenu.java:137) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.AbstractButton.doClick(Unknown Source) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
Je ne sais pas trop par ou chercher, ma requete SQL est bien chargé du fichier (quand je fais un system.out.println, il l'affiche correctement).
Ce code est un copié-collé d'une autre application fait par un ami et chez lui celà fonctionne, et ilme semble que je n'ai pas fait d'erreur ni d'omission dans mon copié-collé![]()
Partager