probleme de connexion dans 1 procédure stockee !
bonsoir,
Alors avec 1 base oracle je dois effectuer un appel de procédure via jdbc comme suit :
dans ma classe ConnectionBD
Code:
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 classe EmployeDAO ou je fais appel à ma procédure stockée :
Code:
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;
}
} |
et dans ma view
Code:
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) ;
} |
mais le probléme c'est quand j'execute, on me retourne tt le tps un nullPointerException dû à cette ligne
Citation:
CallableStatement requete = connection.prepareCall("{call LICPRO.GESTION.LISTE_EMPLOYE(?,?)}");
et comme trace
Code:
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) |
je ne sais d'ou vient le probléme & ça me saoule
si quelqu'un peut me donner un conseil, j'suis preneur
merci d'avance
a + :king: