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

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;
	}
 
}
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
 
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();
}
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
 
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)
La ligne 95 correspond à l'appelle prepare = Connect.PrepareStatement(requete);

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é