Problemas com o metodo delete

4 respostas
D

galera tenho um metodo deletar mais quando eu clico ele noa deleta do banco sera que alguem pode me ajudar

/*
 * NewServlet.java
 *
 * Created on 28 de Abril de 2008, 00:20
 */

package controle;

import Bean.Cliente;
import Persistencia.ClienteDao;
import java.io.*;
import java.util.Iterator;

import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * @author Thiago Meinel
 * @version
 */
public class NewServlet extends HttpServlet {
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
     Cliente client = new Cliente();
     ClienteDao dao = new ClienteDao();
     
     dao.open();
  
     Iterator it = dao.apagar(client).iterator();

                           while(it.hasNext()){
                            Cliente cliente = (Cliente)it.next();
                           
                            out.print("<a href = Apagar?id=" + cliente.getId()+ ">Deletar</a><br>");
                            out.print("Nome:" + cliente.getNome()+"<br>");
                            out.print("Email: " + cliente.getEmail()+"<br>");
                            out.print("Endereco: " + cliente.getEndereco()+"<br>");
                            
                            
           }
                  
           
       
        out.close();
    }
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}

este é o metodo

public List apagar(Cliente cli){
           List list = new ArrayList();    
        try{
            stmt = con.prepareStatement("SELECT * FROM CONTATOS");
           
            rs = stmt.executeQuery();
             
            while(rs.next()){
                
                Cliente cliente = new Cliente();
                cliente.setId(rs.getLong("id"));
                cliente.setNome(rs.getString("nome"));
                cliente.setEmail(rs.getString("email"));
                cliente.setEndereco(rs.getString("endereco"));
                list.add(cliente);
            }
                     
                              
        }catch(Exception e){
            e.getMessage();
        }
     return list;
    }
        
        public void deletar(Cliente cliente,PrintWriter out){
            try{
              stmt = con.prepareStatement("DELETE FROM CONTATOS WHERE ID = ?");
                stmt.setLong(1,cliente.getId());
                stmt.executeUpdate();
                
                out.print(cliente.getId());
            }catch(Exception e){
                e.getMessage();
            }
        }

eu dou um print no getId mais a saida dele é zero ou seja ele nao esta pegando o que eu estou passando pela url
se eu estiver fazendo algo de errado me avisem por favor…

4 Respostas

baudamix

olá …
bom que vc usou o code para postar seu codigo.
segundo para eu ou outro poder te ajudar coloca a stack trace do erro
terceiro pra que vc está passando (PrintWriter out) como entrada se vc não o utiliza?

aguardo

renatocustodio

Experimenta dar um commit na transação ou setar o autoCommit para true.

D

amigos achoque noa expliquei bem o que eu quero vou ser mais especifico, eu quero que qundo o usuario clicar no bt deletar apague o campo no banco ,Budamix o PrintWriter que passei no metodo é so pra saber se o cliente.getId esta recebendo algum valor , como ele esta vindo com zero noa esta passando valor automaticamente esta consulta que sta fazendo ao banco nao funciona fica ssim "delete from contatos where id = 0 " oq ue eu quero é que qundo o cara clicar ele pega o valor no id que passei nesta linha

Iterator it = dao.apagar(client).iterator();   
  
                           while(it.hasNext()){   
                            Cliente cliente = (Cliente)it.next();   
                             
                            out.print("<a href = Apagar?id=" + cliente.getId()+ ">Deletar</a><br>");   nesta linha pelo cliente.getId() eme retorne la no meu metodo
                            out.print("Nome:" + cliente.getNome()+"<br>");   
                            out.print("Email: " + cliente.getEmail()+"<br>");   
                            out.print("Endereco: " + cliente.getEndereco()+"<br>");   
                               
                               
           }

Espero te sido mais espeifico e pesso mais uma vez a ajuda dos amigos
abraço!!!

baudamix

dark neo:
amigos achoque noa expliquei bem o que eu quero vou ser mais especifico, eu quero que qundo o usuario clicar no bt deletar apague o campo no banco ,Budamix o PrintWriter que passei no metodo é so pra saber se o cliente.getId esta recebendo algum valor , como ele esta vindo com zero noa esta passando valor automaticamente esta consulta que sta fazendo ao banco nao funciona fica ssim "delete from contatos where id = 0 " oq ue eu quero é que qundo o cara clicar ele pega o valor no id que passei nesta linha

Iterator it = dao.apagar(client).iterator();   
  
                           while(it.hasNext()){   
                            Cliente cliente = (Cliente)it.next();   
                             
                            out.print("<a href = Apagar?id=" + cliente.getId()+ ">Deletar</a><br>");   nesta linha pelo cliente.getId() eme retorne la no meu metodo
                            out.print("Nome:" + cliente.getNome()+"<br>");   
                            out.print("Email: " + cliente.getEmail()+"<br>");   
                            out.print("Endereco: " + cliente.getEndereco()+"<br>");   
                               
                               
           }

Espero te sido mais espeifico e pesso mais uma vez a ajuda dos amigos
abraço!!!

request.getParameter("id")

assim vc pega o valor no seu NewServlet…

Cliente client = new Cliente();   
if(request.getParameter("id") != null && !request.getParameter("id").equals("")) { //verificação basica
  cliente.setId(request.getParameter("id")); // ou se for interge cliente.setId(new Interge(request.getParameter("id")));
}
ClienteDao dao = new ClienteDao();   
dao.open();   
Iterator it = dao.apagar(client).iterator();
// eblablabla
Criado 28 de abril de 2008
Ultima resposta 28 de abr. de 2008
Respostas 4
Participantes 3