Problème du suppression des donnees en MYSQL via j2ee

Résolu
Etudiante -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
svp vous pouvez m'aider, je n'arrive pas a supprime les donnees dans ma base de donnee Mysql d'apres une formulaire par jsp j2ee.
voila mon code:
servlet:
package web;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import metier.Chambre;
import metier.Operation;
import metier.Operation2;

public class ChambreDelServlet extends HttpServlet {
 Operation2 op = new Operation2();
 
 
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  String cin = req.getParameter("CIN");
  String nom = req.getParameter("nom");

  
  ChambreDelBeans cb = new ChambreDelBeans();
  
  op.remove(cin);
  cb.setListe(op.getALL());
  req.setAttribute("model", cb);
  req.getRequestDispatcher("chambre2.jsp").forward(req, resp);
  
}
}


et le code d'operation:

 public void remove(String cin)
 {
  try {
   Class.forName("com.mysql.jdbc.Driver");
   
   Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/application_reservation","root","");
   
   PreparedStatement pr = cn.prepareStatement("DELETE  FROM 'chambre' WHERE 'cin'=?");
   
   pr.setNString(1, cin);
   
   pr.executeUpdate();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  
  }
 
 }

et la page jsp:

<% 
  ChambreDelBeans chambress;
  if(request.getAttribute("model") != null)
  {
   chambress =(ChambreDelBeans)request.getAttribute("model");
  }
  else
  {
   chambress=new ChambreDelBeans();
  }

  
 %>
<h3>Palais Al Firdaous</h3>
<h5>Ajouter une chambre</h5>
<form action="chambre2" method="post">
<table border="1" width="50%">
 <tr>
  <td>Nom </td>
  <td><input type="text" name="nom"/></td>
 </tr>
 <tr>
 <td>CIN
 </td>
 <td><input type ="text" name="cin"/></td>
 </tr>
 <tr>
  <td colspan="2"><input type="submit" value="delete"/></td>
 </tr>
 <%
  Iterator<Chambre> list =chambress.getListe().iterator();
   while(list.hasNext()){
    Chambre c=list.next();
}
%>
</table>
</form>

svp aider moi c urgant.
merci d'avance

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Dans ta requête
    DELETE  FROM 'chambre' WHERE 'cin'=?
    enlèves les apostrophes :
    DELETE  FROM chambre WHERE cin=?

    Remarque :
    Class.forName
    doit être appelé une fois pour tout le programme, ça ne sert à rien de l'appeler à chaque requête.

    De plus, remove ne dépend pas de this, elle devrait donc être static, ça ne sert à rien de construire un objet Operation2 exprès.
    0
  2. Etudiante
     
    salut kx,
    meme si j'ai enleve les apostrophes il n'y a aucun changement pas de suppression
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Rajoutes des logs dans ton programme pour savoir ce qu'il fait et voir où ça bloque.

      Autre remarques : il faut fermer ta connexion quand tu as fini de t'en servir, je t'invite à utiliser le try-with-resources qui le gère automatiquement.

      De plus, dans ta JSP, tu n'affiches rien, tu itères dans ta boucle, mais sans rien mettre dans ta page de résultat.

      Exemple :

      @Override
      protected void doPost(HttpServletRequest req, HttpServletResponse resp)
          throws ServletException, IOException {
      
          String cin = req.getParameter("CIN");
          logger.info("doPost: CIN="+cin);
      
          String nom = req.getParameter("nom");
          logger.info("doPost: nom="+nom);
      
          try {
              Operation2.remove(cin);
          } catch (SQLException e) {
              logger.info("doPost: error="+e);
              e.printStackTrace();
          }
      
          ChambreDelBeans cb = new ChambreDelBeans();
          cb.setListe(Operation2.getALL());
      
          logger.info("doPost: model="+cb);
          req.setAttribute("model", cb);
      
          req.getRequestDispatcher("chambre2.jsp").forward(req, resp);
      }


      public static void remove(String cin) throws SQLException {
          try (Connection cn = getConnection();
              PreparedStatement pr = cn.prepareStatement("DELETE FROM chambre WHERE cin=?")) {
              pr.setString(1, cin);
              int n = pr.executeUpdate();
              logger.info("remove: n="+n);
          }
       }


      <%
          ChambreDelBeans chambress = (ChambreDelBeans) request.getAttribute("model");
          if(chambress == null) {
              out.println("<h1>Attention: chambress == null</h1>");
              chambress=new ChambreDelBeans();
          }
      %>
      <%
          for (Chambre c : chambress.getListe()) {
              out.println(c);
          }
      %>
      0