Bonjour, je code un projet pour mon cours de Java, pour cela nous codons sur netBeans 8.0.1 avec un base de données dans netbeans donc derby.
Mais j'ai un problème: un nullpointerexception lorsque j'essaie de rechercher dans la bd avec certains critères.
Voici ma classe interface :ensuite: j'ai une classe controller:
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 package view; import controller.AnimalSearchController; import java.awt.*; import java.awt.event.*; import java.text.*; import java.util.*; import javax.swing.*; public class SearchAnimalPanel extends JPanel { private MainWindow mainWindow; private Container cont; private JLabel numPharma,sendDate; private JSpinner spinnerDate; private JComboBox comboPharma; private JPanel panelInfo,panelButton; private JButton search; private Calendar calendar; private AnimalSearchController asec; private java.util.Date date; private java.sql.Date dateEnvoi; private int matPharma; public SearchAnimalPanel (MainWindow mainWindow) { this.mainWindow = mainWindow; cont=mainWindow.getContentPane(); panelInfo = new JPanel(); panelButton = new JPanel(); panelInfo.setLayout(new GridLayout(3,2)); this.setBorder(BorderFactory.createTitledBorder("Recherche animal")); setLayout(new BorderLayout()); add(panelInfo); add(panelButton,BorderLayout.SOUTH); asec = new AnimalSearchController(); numPharma = new JLabel("Matricule et nom du pharmacien : "); numPharma.setHorizontalAlignment(SwingConstants.RIGHT); comboPharma = new JComboBox(asec.getPharmaTab()); sendDate = new JLabel("Date d'envoi de l'ordonnance : "); sendDate.setHorizontalAlignment(SwingConstants.RIGHT); calendar = Calendar.getInstance(); SpinnerModel model = new SpinnerDateModel(calendar.getTime(),null,calendar.getTime(),Calendar.DAY_OF_MONTH); spinnerDate = new JSpinner(model); JComponent editor = new JSpinner.DateEditor(spinnerDate,"dd/MM/yyyy"); spinnerDate.setEditor(editor); panelInfo.add(numPharma); panelInfo.add(comboPharma); panelInfo.add(sendDate); panelInfo.add(spinnerDate); search = new JButton("chercher"); panelButton.add(search); ActionButtonSearchAnimal aBSA = new ActionButtonSearchAnimal(); search.addActionListener(aBSA); } public void enableAnimalSearch(Boolean e) { mainWindow.enableMenu(e); comboPharma.setEnabled(e); spinnerDate.setEnabled(e); search.setEnabled(e); } public MainWindow getMainWindow() { return mainWindow; } private class ActionButtonSearchAnimal implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == search) { date = (java.util.Date)spinnerDate.getValue(); dateEnvoi= new java.sql.Date(date.getTime()); String pharma = comboPharma.getSelectedItem().toString(); String matString = pharma.substring(0,2); matPharma = Integer.parseInt(matString); SearchAnimalPanelResult searchAnimalPanelResult = new SearchAnimalPanelResult(mainWindow,SearchAnimalPanel.this,matPharma,dateEnvoi); } } } }ensuite classe manager:
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 package controller; import business.*; import java.sql.Date; import model.*; public class AnimalSearchController { private AnimalSearchManager asem; public AnimalSearchController() { asem = new AnimalSearchManager(); } public AnimalSearchAff[] getAnimSearch(int matP,Date dateE) { return asem.getTabAnimalSearch(matP,dateE); } public String[] getPharmaTab() { PharmacistObject[] tabObjectPh = new PharmacistObject[asem.getTabPharma().length]; tabObjectPh = asem.getTabPharma(); String[] tabPh = new String[tabObjectPh.length]; for (int i=0;i<tabObjectPh.length;i++) { tabPh[i] = tabObjectPh[i].toString(); } return tabPh; } }et enfin la classe d'access a la base de donnée:
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 package business; import dataAccess.*; import java.sql.Date; import java.util.ArrayList; import model.*; public class AnimalSearchManager { private AnimalSearchDBAccess asea; public AnimalSearchManager() { asea = new AnimalSearchDBAccess(); } private AnimalSearchAff[] transformationAnimalSearch(ArrayList<AnimalSearchAff>infoAnimalSheet) { AnimalSearchAff[] tabAnimalSearch = new AnimalSearchAff[infoAnimalSheet.size()]; for (int i = 0;i<infoAnimalSheet.size();i++) { tabAnimalSearch[i] = infoAnimalSheet.get(i); } return tabAnimalSearch; } public AnimalSearchAff[] getTabAnimalSearch(int matPh,Date dateEnvoi) { return transformationAnimalSearch(asea.getAllSearchRecordAnimal(matPh,dateEnvoi)); } private PharmacistObject[] transformationPharma(ArrayList<Integer>arrayMatPh,ArrayList<String>arrayNomPh) { PharmacistObject[] tabPharma = new PharmacistObject[arrayMatPh.size()]; for (int i = 0;i<arrayMatPh.size();i++) { tabPharma[i] = new PharmacistObject(arrayMatPh.get(i),arrayNomPh.get(i)); } return tabPharma; } public PharmacistObject[] getTabPharma() { return transformationPharma(asea.getMatriculePh(),asea.getNomPh()); } }et voici l'erreur:
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 package dataAccess; import java.sql.*; import java.util.ArrayList; import model.*; public class AnimalSearchDBAccess implements AnimalSearchDBAccessInterface { private Connection connection; public ArrayList<AnimalSearchAff> getAllSearchRecordAnimal(int matricule,Date dateEnvoi) { try { connection = SingleConnection.getInstance(); AnimalSearchAff animalSearchAff; ResultSet donnees; String requeteSQL = " select numRegistre,espece,aTatouage,aPuce from Fiche_Signaletique_Animal" + " where numRegistre = (select animalAff from Ordonnance" + " where dateEnvoi = ? " + " where numRegistre = (select matricule from Pharmacien" + " where matricule = ?))"; PreparedStatement prepStat = connection.prepareStatement(requeteSQL); prepStat.setDate(1,dateEnvoi); prepStat.setInt(2,matricule); donnees = prepStat.executeQuery(); ArrayList<AnimalSearchAff>allAnimalSearchList = new ArrayList<>(); while(donnees.next()) { animalSearchAff = new AnimalSearchAff(donnees.getInt("matricule"),donnees.getString("espece"),donnees.getBoolean("aTatouage"),donnees.getBoolean("aPuce")); allAnimalSearchList.add(animalSearchAff); } return allAnimalSearchList; } catch(Exception e) { //throw new dataException } return null; } public ArrayList<Integer> getMatriculePh() { try { connection = SingleConnection.getInstance(); ResultSet donnees; String requeteSQL = "select matricule from Pharmacien"; PreparedStatement prepStat = connection.prepareStatement(requeteSQL); donnees = prepStat.executeQuery(); ArrayList<Integer> arrayMatPh = new ArrayList<>(); while(donnees.next()) { arrayMatPh.add(donnees.getInt("matricule")); } return arrayMatPh; } catch(Exception e) { // throw new dataException(); } return null; } public ArrayList<String> getNomPh() { try { connection = SingleConnection.getInstance(); ResultSet donnees; String requeteSQL = "select nom from Pharmacien"; PreparedStatement prepStat = connection.prepareStatement(requeteSQL); donnees = prepStat.executeQuery(); ArrayList<String> arrayNomPh = new ArrayList<>(); while(donnees.next()) { arrayNomPh.add(donnees.getString("nom")); } return arrayNomPh; } catch(Exception e) { // throw new dataException(); } return null; } }Voila du coup j'ai fait des testes je sais que les variables de la requete sql sont bien remplies et meme quand je test en remplacant ces variables par les bonnes valeurs, j'ai la meme erreurException in thread "AWT-EventQueue-0" java.lang.NullPointerException
at business.AnimalSearchManager.transformationAnimalSearch(AnimalSearchManager.java:19)
at business.AnimalSearchManager.getTabAnimalSearch(AnimalSearchManager.java:30)
at controller.AnimalSearchController.getAnimSearch(AnimalSearchController.java:18)
at view.SearchAnimalPanelResult.<init>(SearchAnimalPanelResult.java:45)
at view.SearchAnimalPanel$ActionButtonSearchAnimal.actionPerformed(SearchAnimalPanel.java:95)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
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:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Partager