Bonjours à tous,

J'ai un problème de suppression d'un enregistrement dans ma table étudiant.Au fait quand je tente de supprimer un enregistrement j'ai l'erreur suivante :
Nom : Capture.PNG
Affichages : 189
Taille : 14,5 Ko

Voici le code de la méthode de suppression depuis mon EtudiantDaoImpl(classe qui implemente l'interface contenant les methode d'ajout,selection,et suppression):

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
 
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 static DAO.DAOUtilitaire.*;
import DAOException.DAOException;
import LesObjets.Etudiant;
 
public class EtudiantDaoImpl implements EtudiantDao {
	private static final String SelectionCons = "call SelectionEtudiant()";
	private static final String insertionEtudiant = "call AjoutEtudiant(?,?,?,?)";
	private static final String suppressionEtudiant = "call SuppressionEtudiant(?)";
	//private static final String selectionParEtudiant = null;
	private DAOFactory daoFactory;
 
	EtudiantDaoImpl(DAOFactory daoFactory){
		this.daoFactory = daoFactory;
	}
 
@Override
	public void SupprimerEtudiant(Etudiant supprimeEtudiant) throws DAOException {
		Connection connexion = null;
        PreparedStatement preparedStatement = null;
        try{
        	connexion = daoFactory.getConnection();
        	preparedStatement = connexion.prepareStatement(suppressionEtudiant);
 
        	preparedStatement.setString(1, supprimeEtudiant.getNumEtudiant());
        	int confirmationSup = preparedStatement.executeUpdate();
 
        	if(confirmationSup == 0){
        		throw new DAOException("Suppression reussie.");
        	}else{
        		supprimeEtudiant.setNumEtudiant(null);
        	}
        }catch(SQLException s){
       	 throw new DAOException(s);
        }finally{
        	fermeturesSilencieuses(preparedStatement,connexion);
        }
 
	}
}
Voici le code de la servlet de suppression :


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
package TPServlet;
 
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import DAO.EtudiantDao;
import DAOException.DAOException;
import LesObjets.Etudiant;
import DAO.DAOFactory;
 
 
@WebServlet("/supprimeEtudiant")
public class supprimeEtudiant extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final String matriculeCons = "matricule";
	private static final String sessionEtudiant = "etudiants";
	private static final String etudiantsCons = "/listeEtudiant";
	private static final String confDAOFActory = "daoFactory";
	private EtudiantDao etudiantDao;
 
	public void init() throws ServletException {
		this.etudiantDao = ((DAOFactory) getServletContext().getAttribute(confDAOFActory)).getEtudiantDao();
	}
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response, String listeEtudiant) throws ServletException, IOException {
        String matricule = request.getParameter(matriculeCons); 
 
        HttpSession session = request.getSession();
        Map<String,Etudiant> etudiants = (HashMap<String, Etudiant>) session.getAttribute(sessionEtudiant);
        if(matricule != null && etudiants != null){
        	try{
        		Etudiant etudiant = new Etudiant();
        	    etudiantDao.SupprimerEtudiant(etudiants.get(matricule));
        	    etudiant.setNumEtudiant(null);
        	    etudiants.remove(matricule);
 
        	}catch(DAOException d){
     		   d.printStackTrace();
        	}
    	    session.setAttribute(sessionEtudiant, etudiants);
        }
        response.sendRedirect(request.getContextPath() + etudiantsCons);
	}
 
}
Voici comment j'ai creer le lien dans la jsp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<td><a href = "<c:url value = "/supprimeEtudiant"><c:param name = "matricule" value = "${mapEtudiant.key}"/></c:url>"><img src = "<c:url value = "/inc/sup.png"/>" alt = "Supprimer"/></a></td>
Quand je pointe la souris sur l'enregistrement que je veux supprimer je constate un changement au niveau du matricule qui permet de faire la suppression,par exemple quand je pointe sur l'étudiant ayant le matricule "001/IAI/2001" j'ai le chemin suivant après http://localhost:12150/TP : /supprimeEtudiant?matricule=001%2fIAI%2f2001.

Je me dit que normalement je doit avoir : http://localhost:12150/TP/supprimeEt...e=001/IAI/2001.


Dans la base de données le matricule est de type varchar et String au niveau du bean.




NB : je travaille en modèle DAO avec les procédures stockées. La sélection et l'insertion fonctionne bien.Je compte sur votre aide.Merci d'avance!!!