Foros del Web » Programación para mayores de 30 ;) » Java »

eliminar registro de la BD desde java EE

Estas en el tema de eliminar registro de la BD desde java EE en el foro de Java en Foros del Web. Hola amigos! estoy intentando borrar un registro de la tabla desde jee y no me funciona. mi idea es borrarlo con respecto al ID de ...
  #1 (permalink)  
Antiguo 14/09/2013, 15:17
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
eliminar registro de la BD desde java EE

Hola amigos! estoy intentando borrar un registro de la tabla desde jee y no me funciona. mi idea es borrarlo con respecto al ID de la tabla. se donde esta el error pero no como solucionarlo. se que es algo muy bobo pero recien empiezo. les muestro mi codigo:

clienteDao.java:
aca esta el metodo
Código Java:
Ver original
  1. package dao;
  2.  
  3. import clases.cliente;
  4. import conexion.Conexion;
  5. import java.sql.Connection;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.ArrayList;
  10.  
  11. public class clienteDao {
  12.  
  13.     //INSERTAR
  14.     public void insertarCliente(Connection con, cliente c) throws SQLException{
  15.         String sql="INSERT INTO cliente(nombre,apellido,dni) values('"+c.getNombre()+"','"+c.getApellido()+"','"+c.getDni()+"')";
  16.         Statement st=con.createStatement();
  17.         st.execute(sql);
  18.         st.close();
  19.  
  20.     }
  21.  
  22.     //BORRAR
  23.     public void borrarCliente(Connection con, cliente c) throws SQLException{
  24.         String sql="DELETE FROM cliente WHERE idCliente="+c.getIdCliente();
  25.         Statement st=con.createStatement();
  26.         st.execute(sql);
  27.         st.close();
  28.     }
  29.  
  30.  
  31.     //MOSTRAR
  32.     public ArrayList<cliente> traerClientes() throws Exception {
  33.  
  34.         String sql= "SELECT * FROM cliente";
  35.  
  36.         Connection con = Conexion.getConnection();
  37.         Statement st=con.createStatement();
  38.         ResultSet rs=st.executeQuery(sql);
  39.  
  40.         ArrayList <cliente> al= new ArrayList<cliente>();
  41.  
  42.  
  43.         while(rs.next()){
  44.             cliente c= new cliente();
  45.             c.setIdCliente(rs.getInt("idCliente"));
  46.             c.setNombre(rs.getString("nombre"));
  47.             c.setApellido(rs.getString("apellido"));
  48.             c.setDni(rs.getString("dni"));
  49.             //agrega todos los clientes al arrayList
  50.             al.add(c);
  51.         }
  52.         //retorna el array lista de clientes
  53.         return al;
  54.     }
  55.  
  56.  
  57.     //MODIFICAR
  58.     public void modificarCliente(){
  59.     }
  60.  
  61.  
  62.     //BUSCAR
  63.     public void buscarCliente(){
  64.  
  65.     }
  66. }
clientes.jsp
listado de cliente (aca es donde funciona el traerCLientes q es otro metodo)
Código Java:
Ver original
  1. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  3.    "http://www.w3.org/TR/html4/loose.dtd">
  4.  
  5. <html>
  6.     <head>
  7.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8.         <title>JSP Page</title>
  9.         <link rel="stylesheet" type="text/css" href="estilo.css" />
  10.         <%@page import="dao.clienteDao"%>
  11.         <%@page import="clases.cliente"%>
  12.         <%@page import="java.util.ArrayList"%>
  13.     </head>
  14.     <body>
  15.         <div id="contenido">
  16.             <table width=100%"" border="1">
  17.                 <tr>
  18.                     <th><b>NOMBRE</b></th>
  19.                     <th><b>APELLIDO</b></th>
  20.                     <th><b>DNI</b></th>
  21.                     <th><b>accion</b></th>
  22.                 </tr>
  23.                 <!--Completo tabla con registros de nombre, apellido y dni de los clientes-->
  24.                 <%
  25.                 clienteDao dao = new clienteDao();
  26.                 ArrayList<cliente> a = dao.traerClientes();
  27.                 for(int i=0;i<a.size();i++){
  28.                 %>
  29.                 <tr>
  30.                     <td><%= a.get(i).getNombre()%></td>
  31.                     <td><%= a.get(i).getApellido()%></td>
  32.                     <td><%= a.get(i).getDni()%></td>
  33.                     <td width="5%">
  34.  
  35.                         <form method="POST" action="clienteServlet">
  36.                             <input type="hidden" value="<%= a.get(i).getIdCliente()%>" name="forParametros">
  37.                             <input type="hidden" value="borrarCliente" name="accion">
  38.                             <input type="submit" value="Eliminar" name="accion">
  39.                         </form>
  40.                     </td>
  41.                 </tr>
  42.  
  43.                 <% } %>
  44.             </table>
  45.         </div>
  46.     </body>
  47. </html>
y el servlet que es el que hace q esto responda(clienteServlet):
Código Java:
Ver original
  1. package servlet;
  2.  
  3. import clases.cliente;
  4. import conexion.Conexion;
  5. import dao.clienteDao;
  6. import java.io.IOException;
  7. import java.io.PrintWriter;
  8. import java.sql.Connection;
  9. import java.sql.SQLException;
  10. import javax.servlet.ServletException;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14.  
  15. public class clienteServlet extends HttpServlet {
  16.  
  17.     @Override
  18.     protected void doGet(HttpServletRequest request, HttpServletResponse response)
  19.     throws ServletException, IOException {
  20.  
  21.         response.setContentType("text/html;charset=UTF-8");
  22.         PrintWriter out = response.getWriter();
  23.  
  24.         out.println("<head>");
  25.         out.println("<link rel='stylesheet' type='text/css' href='estilo.css' />");
  26.         out.println("</head>");
  27.  
  28.         out.println("<div id='contenido'>");
  29.  
  30.         out.println("<table width='100%'>");
  31.             //COMIENZA EL FORM DE CONTACTO
  32.             out.println("<form method='POST' action='clienteServlet'>");
  33.  
  34.             out.println("<tr>");
  35.  
  36.                 out.println("<td>");
  37.                     out.println("<label>NOMBRE:</label>");
  38.                     out.println("<input name='nombre' type='text'>");
  39.                 out.println("</td>");
  40.  
  41.                 out.println("<td>");
  42.                     out.println("<label>APELLIDO:</label>");
  43.                     out.println("<input name='apellido' type='text'>");
  44.                 out.println("</td>");
  45.  
  46.                 out.println("<td>");
  47.                     out.println("<label>DNI:</label>");
  48.                     out.println("<input name='dni' type='text'>");
  49.                 out.println("</td>");
  50.  
  51.                 out.println("<td>");
  52.                     out.println("<input type='hidden' value='borrarCliente' name='idCliente'>");
  53.                     out.println("<input type='hidden' value='insertarCliente' name='accion'>");
  54.                     out.println("<input type='submit' name='Enviar'>");
  55.                 out.println("</td>");
  56.  
  57.             out.println("</form>");
  58.             //TERMINA EL FORM--------------------
  59.  
  60.             out.println("</tr>");
  61.             out.println("</table>");
  62.  
  63.             out.println("<iframe src='clientes.jsp' width='970px' height='500' align='center' frameborder='0'>");
  64.             out.println("</div>");
  65.     }
  66.  
  67.     @Override
  68.     protected void doPost(HttpServletRequest request, HttpServletResponse response)
  69.     throws ServletException, IOException {
  70.  
  71.             response.setContentType("text/html;charset=UTF-8");
  72.             PrintWriter out = response.getWriter();
  73.  
  74.  
  75.             String formParametros = request.getParameter("accion");
  76.             Connection con=null;
  77.  
  78.             if(formParametros !=null){
  79.  
  80.                 try {
  81.                     con = Conexion.getConnection();
  82.                 } catch (Exception ex) {
  83.  
  84.                     ex.printStackTrace();
  85.                 }
  86.  
  87.                 clienteDao dao=new clienteDao();
  88.  
  89.                 cliente c=new cliente();
  90.  
  91.                 c.setIdCliente(request.getParameter("idCLiente"));
  92.                 c.setNombre(request.getParameter("nombre"));
  93.                 c.setApellido(request.getParameter("apellido"));
  94.                 c.setDni(request.getParameter("dni"));
  95.  
  96.                 if(formParametros.equals("insertarCliente")){
  97.                     try {
  98.                         dao.insertarCliente(con, c);
  99.                     } catch (SQLException ex) {
  100.                         ex.printStackTrace();
  101.                     }
  102.  
  103.                     if (c == null) {
  104.                         response.sendRedirect("error.jsp");
  105.                     } else {
  106.                         response.sendRedirect("clienteServlet");
  107.                     }
  108.                 }
  109.  
  110.                 if(formParametros.equals("borrarCliente")){
  111.                     try {
  112.                         dao.borrarCliente(con, c);
  113.                     } catch (SQLException ex) {
  114.                         ex.printStackTrace();
  115.                     }
  116.                 }
  117.             }
  118.     }
  119.  
  120.     @Override
  121.     public String getServletInfo() {
  122.         return "Short description";
  123.     }// </editor-fold>
  124.  
  125. }
  #2 (permalink)  
Antiguo 14/09/2013, 15:19
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: eliminar registro de la BD desde java EE

para mi el error esta primero en la linea 36 de clientes.jps y el otro problema que tengo es en la linea 89 del servlet que instancion un cliente pero no le seteo un ID. cuando lo quiero setear me da un error. probe con el debbug y evidentemente cuando pongo eliminar llenar los datos del cliente pero no trae ningun ID.. desde ya al que pueda ayudar muchas gracias!!!
  #3 (permalink)  
Antiguo 15/09/2013, 12:33
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 11 años
Puntos: 9
Respuesta: eliminar registro de la BD desde java EE

Para eliminar o modificar tienes que usar executeUpdate(), estas usando execute().

El request.getParameter() devuelve una String, si el campo ID del cliente no es String, te dará un error.
  #4 (permalink)  
Antiguo 15/09/2013, 13:15
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: eliminar registro de la BD desde java EE

entonces como hago para traer el ID del cliente?? lo transformo en un string?
  #5 (permalink)  
Antiguo 15/09/2013, 15:30
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 11 años
Puntos: 9
Respuesta: eliminar registro de la BD desde java EE

Si el campo idCliente es int, lo tienes que pasar a int

c.setIdCliente(Integer.parseInt(request.getParamet er("idCLiente")));
  #6 (permalink)  
Antiguo 15/09/2013, 16:14
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: eliminar registro de la BD desde java EE

si ya habia probado de esa manera pero sigue sin eliminar el registro. evidentemente hay un error en otro lado
  #7 (permalink)  
Antiguo 15/09/2013, 17:23
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: eliminar registro de la BD desde java EE

el problema es que cuando llega al metodo de borrarCliente no esta tomando el ID. porque segun el debbuger llega asi: "DELETE FROM cliente WHERE idCliente=0" cualquier registro que pongo eliminar llega como ID 0
  #8 (permalink)  
Antiguo 15/09/2013, 18:17
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 11 años
Puntos: 9
Respuesta: eliminar registro de la BD desde java EE

91. c.setIdCliente(request.getParameter("idCLiente"));

¿No sera idCliente?
  #9 (permalink)  
Antiguo 15/09/2013, 19:09
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: eliminar registro de la BD desde java EE

si eso ya lo corregi pero nada.. me estoy volviendo loco y se q es una bobada
  #10 (permalink)  
Antiguo 15/09/2013, 19:57
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 11 años
Puntos: 9
Respuesta: eliminar registro de la BD desde java EE

37 <input type="hidden" value="<%= a.get(i).getIdCliente()%>" name="forParametros">

Si no me confundo le estas diciendo que el idCliente se llamara forParametros, y en el servlet estas buscando un parámetro llamado idCliente

91. c.setIdCliente(request.getParameter("idCLiente"));

prueba con forParametros.
  #11 (permalink)  
Antiguo 15/09/2013, 20:39
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: eliminar registro de la BD desde java EE

java.lang.UnsupportedOperationException: Not yet implemented
clases.cliente.setIdCliente(cliente.java:61)
servlet.clienteServlet.doPost(clienteServlet.java: 89)
javax.servlet.http.HttpServlet.service(HttpServlet .java:643)
javax.servlet.http.HttpServlet.service(HttpServlet .java:723


lo de formParametros creo q tienes razon. pero sigue habiendo un problema al setear el id y no se porque:S
  #12 (permalink)  
Antiguo 16/09/2013, 03:15
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: eliminar registro de la BD desde java EE

Hola:

Lo de UnsupportedOperationException "Not yet implemented" es una excepción que sueltan algunas clases java cuando el código todavía no se ha implementado en ese método. Revisa el código de clases.cliente a ver qué tiene en ese método setIdCliente.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #13 (permalink)  
Antiguo 16/09/2013, 07:04
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: eliminar registro de la BD desde java EE

Clase cliente
Código Java:
Ver original
  1. package clases;
  2.  
  3. public class cliente {
  4.  
  5.     int idCliente;
  6.     String Nombre;
  7.     String Apellido;
  8.     String Dni;
  9.  
  10.     //constructores
  11.     public cliente(int idCliente, String Nombre, String Apellido, String Dni) {
  12.         this.idCliente = idCliente;
  13.         this.Nombre = Nombre;
  14.         this.Apellido = Apellido;
  15.         this.Dni = Dni;
  16.     }
  17.  
  18.     public cliente() {
  19.  
  20.     }
  21.  
  22.    
  23.  
  24.    
  25.  
  26.     //get a set
  27.     public String getApellido() {
  28.         return Apellido;
  29.     }
  30.  
  31.     public void setApellido(String Apellido) {
  32.         this.Apellido = Apellido;
  33.     }
  34.  
  35.     public String getDni() {
  36.         return Dni;
  37.     }
  38.  
  39.     public void setDni(String Dni) {
  40.         this.Dni = Dni;
  41.     }
  42.  
  43.     public String getNombre() {
  44.         return Nombre;
  45.     }
  46.  
  47.     public void setNombre(String Nombre) {
  48.         this.Nombre = Nombre;
  49.     }
  50.  
  51.     public int getIdCliente() {
  52.         return idCliente;
  53.     }
  54.  
  55.     public void setIdCliente(int idCliente) {
  56.         this.idCliente = idCliente;
  57.     }
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65. }
  #14 (permalink)  
Antiguo 16/09/2013, 09:12
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: eliminar registro de la BD desde java EE

Hola:

El error habla de línea 61 en cliente.java

clases.cliente.setIdCliente(cliente.java:61)

¿Esa versión que has puesto de cliente.java corresponde con la del error? La línea 61 no corresponde al método setIdCliente.

En la excepción que te sale, ¿hay algo relativo al error delante de "java.lang.UnsupportedOperationException: Not yet implemented"?

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #15 (permalink)  
Antiguo 16/09/2013, 10:45
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: eliminar registro de la BD desde java EE

muchachos lo soluciones! gracias a que ustedes me fueron orientando donde estaba el error. lo volvi a hacer el proyecto y funciono..
aparentemente uno de los errores esta en :

Código Java:
Ver original
  1. c.setIdCliente(Integer.parseInt(request.getParameter("idCliente")));

que nop lo estaba tomando como un INT

y el otro error estaba en

Código Java:
Ver original
  1. <input type="text" value="<%= a.get(i).getIdCliente()%>" name="idCliente" readonly>

que en name decia ACCION

LES AGRADEZCO A TODOS Y ESPERO QUE SIRVA PARA OTRA GENTE TAMBIEN
  #16 (permalink)  
Antiguo 18/09/2013, 18:12
 
Fecha de Ingreso: junio-2008
Mensajes: 54
Antigüedad: 15 años, 10 meses
Puntos: 19
Respuesta: eliminar registro de la BD desde java EE

Solo como nota, coincido con Cazador1922, para eliminar o modificar se debe usar executeUpdate() en lugar del execute().

Etiquetas: bd, clase, html, jsp, metodo, registro, servlet, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:20.