bonsoir,
Alors avec 1 base oracle je dois effectuer un appel de procédure via jdbc comme suit :
dans ma classe ConnectionBD
et dans ma classe EmployeDAO ou je fais appel à ma procédure stocké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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 package model; import java.sql.*; import oracle.jdbc.pool.OracleDataSource; public class ConnectionBD { private Connection conn ; private OracleDataSource ods ; private CallableStatement callstmt; /*======================================================= * construteurs *======================================================*/ /** * constructeur qui se charge d'etablir la connexion avec * la bd via 1 OracleDataSource * */ public ConnectionBD(Connection conn,OracleDataSource ods) { try { //chargement du driver- p.7 du cours ods = new OracleDataSource() ; ods.setDriverType("thin") ; ods.setServerName("soracle") ; ods.setNetworkProtocol("tcp") ; ods.setPortNumber(1521) ; ods.setDatabaseName("DB01") ; //ici a conn il faut mettre ton login deux fois entre " " //obligatoire pour avoir la connexion conn = ods.getConnection("i10b01a","i10b01a") ; System.out.println("connexion réussie aupres de la base de données") ; } catch(SQLException e) { System.out.println("connexion auprés de la base de donnée échouee"); e.printStackTrace() ; } } /*============================================= * methodes * ============================================*/ /** * methode qui ferme la connexion */ public void fermerConnexion() { if(conn != null) { try { conn.close() ; } catch(Exception e) { e.printStackTrace(); } } } }
et dans ma view
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 package model ; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Vector; import oracle.jdbc.OracleTypes; import oracle.jdbc.pool.OracleDataSource; public class EmployeDAO { private Vector listeEmploye; public EmployeDAO(Vector listeEmploye) { this.listeEmploye = listeEmploye; } public void listeEmployes(int service, Connection connection) throws SQLException { CallableStatement requete = connection.prepareCall("{call LICPRO.GESTION.LISTE_EMPLOYE(?,?)}"); requete.setInt(1,service); requete.registerOutParameter(2,OracleTypes.CURSOR); requete.execute(); ResultSet resultat = (ResultSet)requete.getObject(2); try { Vector ligne = new Vector() ; // Lit une ligne while(resultat.next()) { ligne.add(resultat.getInt("nuempl")); ligne.add(resultat.getString("nomempl")); ligne.add(resultat.getInt("hebdo")); ligne.add(resultat.getInt("affect")); // Ajout de la ligne au tableau listeEmploye.add(ligne) ; ligne = new Vector() ; } } catch(SQLException se){} } public Vector getListeEmploye() { return listeEmploye; } public void setListeEmploye(Vector listeEmploye) { this.listeEmploye = listeEmploye; } }
mais le probléme c'est quand j'execute, on me retourne tt le tps un nullPointerException dû à cette ligne
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 public View(Model model, Controler controler) throws SQLException { super("JDBC Employé"); //initialisation du modele this.model = model; this.ctrl = controler; //dimension fenetre setSize(800,600); //Fermeture propre de l'appli setDefaultCloseOperation(EXIT_ON_CLOSE); String[] colonnes = {"numero employe ","nom de l'employe","hebdo","affect"} ; final DefaultTableModel modele = new DefaultTableModel(colonnes,0) ; //Jtable liste = new JTable(modele); liste.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); originalSelectionBackGround = liste.getSelectionBackground(); scrollPane = new JScrollPane(liste); getContentPane().setLayout(new BorderLayout()); getContentPane().add(scrollPane); container = new Container(); container.setLayout(new FlowLayout()); panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(container); int service = 0 ; getContentPane().add(panel,BorderLayout.SOUTH); EmployeDAO empD = new EmployeDAO(listeEmploye) ; empD.listeEmployes(service, conn) ; }
et comme traceCallableStatement requete = connection.prepareCall("{call LICPRO.GESTION.LISTE_EMPLOYE(?,?)}");
je ne sais d'ou vient le probléme & ça me saoule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 connexion réussie aupres de la base de données Exception in thread "main" java.lang.NullPointerException at model.EmployeDAO.listeEmployes(EmployeDAO.java:26) at view.View.<init>(View.java:82) at main.Main.<init>(Main.java:37) at main.Main.main(Main.java:67)
si quelqu'un peut me donner un conseil, j'suis preneur
merci d'avance
a +![]()
Partager