Bonjour à tous,

Au fait j'ai pu repérer là ou se trouve mon erreur quand je tente de modifier.En effet, j'ai remplacé le paramètre ? que j'ai mis lors de l'appel de ma procédure stockée(

Code : Sélectionner tout - Visualiser dans une fenêtre à part
private static final String SelectionParNumEtudiantCons = "call SelectionParNumEtudiant(?)";
)

par un matricule d'un étudiant que j'ai enregistré dans ma base et j'ai supprimé cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
preparedStatement.setString(1,etudiant.getNumEtudiant());
dans la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
public List<Etudiant> EtudiantSelectionner(Etudiant etudiant) throws DAOException
tout a marché(les champs de mon formulaire s'affiche bien avec des informations relatives au matricule) mais dès que je remet le ? et la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
preparedStatement.setString(1,etudiant.getNumEtudiant());
J'ai l'erreur suivante dans le navigateur :
Nom : Capture.PNG
Affichages : 441
Taille : 42,1 Ko
ça m'indique une erreur à la ligne 138 et c'est là que se trouve :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
preparedStatement.setString(1,etudiant.getNumEtudiant());
Je me suis dit que peut être l'affectation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
preparedStatement.setString(1,etudiant.getNumEtudiant());
n'est valable que pour des opérations de mise à jour c'est-à-dire insertion,update et suppression alors que pour mon cas c'est de prendre les informations relatives à un matricule donné et les afficher dans les champs de mon formulaire de modification.

Je demande votre aide pour savoir comment m'y prendre.

Voici mon code :

Voici comment je créé le lien vers ma servlet de modification à partir de la liste des étudiants :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<td><a href = "<c:url value = "/modifierEtudiant"><c:param name = "matricule" value = "${mapEtudiant.key}"/></c:url>"><img src = "<c:url value = "/Image/modif.png"/>" alt = "Modifier"/></a></td>
Code de la méthode EtudiantSelectionner(Etudiant etudiant):

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
 
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 javax.servlet.http.HttpServletRequest;
 
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 SelectionParNumEtudiantCons = "call SelectionParNumEtudiant(?)";
	//private static final String selectionParEtudiant = null;
	private DAOFactory daoFactory;
 
	EtudiantDaoImpl(DAOFactory daoFactory){
		this.daoFactory = daoFactory;
	}public List<Etudiant> EtudiantSelectionner(Etudiant etudiant) throws DAOException {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultat = null;
        List<Etudiant> etudiants = new ArrayList<Etudiant>();
        try{
            connection = daoFactory.getConnection();
            //int[] NumEtudiant = null;
            preparedStatement = connection.prepareStatement(SelectionParNumEtudiantCons);
            preparedStatement.setString(1,etudiant.getNumEtudiant());
            resultat = preparedStatement.executeQuery();
            while(resultat.next()){
                etudiants.add(Stockage(resultat));
            }
        }catch(SQLException e){
            throw new DAOException("La selection a échoué.",e);
        }finally {
            fermeturesSilencieuses( resultat, preparedStatement,connection );
        }
        return etudiants;
        }
}
Code de la servlet de modification :

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
ackage TPServlet;
 
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
import javax.servlet.ServletConfig;
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 CoucheMetier.EtudiantMetier;
import DAO.DAOFactory;
import DAO.EtudiantDao;
import DAOException.DAOException;
import LesObjets.Etudiant;
 
 
@WebServlet("/modifierEtudiant")
public class modifierEtudiant extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final String ConDAOFactory = "daoFactory";
	private static final String matriculeCons = "matricule";
	private static final String sessionEtudiantUnique = "resultas";
	private static final String cheminModif = "/WEB-INF/modifierEtudiant.jsp";
 
	private EtudiantDao etudiantDao;
 
 
	public void init() throws ServletException {
      this.etudiantDao = ((DAOFactory) getServletContext().getAttribute(ConDAOFactory)).getEtudiantDao();
	}
 
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       String matricule = request.getParameter(matriculeCons);
 
        HttpSession session = request.getSession(); 
 
       if(matricule != null){
           Map<String,Etudiant> resultas =  (HashMap<String, Etudiant>) session.getAttribute(sessionEtudiantUnique) ;
           Etudiant etudiant = new Etudiant();
           try{
        	  //Etudiant matri =  resultas.get(matricule);
    	   etudiantDao.EtudiantSelectionner(resultas.get(matricule)); 
 	      resultas.put(etudiant.getNumEtudiant(),etudiant);
         }catch(DAOException d){
    	  d.printStackTrace();
          }
 
          session.setAttribute(sessionEtudiantUnique, resultas);
       }
      this.getServletContext().getRequestDispatcher(cheminModif).forward(request, response); 
	}
 
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
 
}
Merci d'avance!!!