Delete table jsp

10 respostas
F

Ola bom dia,
Estou com um grande problema ... que para alguns pode ser considerado como pequeno , rs.

enfim ...

preciso apagar um registro de uma tabela, portanto preciso do ID certo ?

Gerei a lista de todos os registros e tenho uma imagem com o simbolo excluir ... ao clicar nela eu apago o registro selecionado ...

OBS:

tenho uma classe chamada CLIENTE aonde gero os gets e sets;

tenho uma outra chamada JDBCClienteDAO aonde é responsavel para executar o delete, insert etc...( public void excluir( int id))

no meu cliente.jsp ocorre o seguinte ... OBS que preciso pegar o id e enviar por parametro para excluir ...

estou fazendo da seguinte forma ...

<%

	FabricaConexao fabrica = new FabricaConexao();
	Connection conexao = fabrica.conectar();
	
	JDBCClienteDAO dao = new JDBCClienteDAO(conexao);
	
	java.util.List <Cliente> clientes = dao.listarTodos();
	
%>

  <table border="1" cellpadding="10" align="center">
      <tr>
      <th width="14">Id</th>
      <th width="107">Nome Fantasia</th>
      <th width="54">Numero</th>
      <th width="43">Bairro</th>
      <th width="47">Cidade</th>
      <th width="51">Alterar</th>
      <th width="53">Excluir</th>
    </tr>
   
    <tr>
    <% for (Cliente c:clientes) {%>
	<td id="codigo"><%= c.getId() %></td>
	<td><%= c.getNomeFantasia() %></td>
	<td><%= c.getNumero() %></td>
	<td><%= c.getBairro() %></td>
	<td><%= c.getCidade() %></td>
	
<% 
	

if( request.getParameter("acao") == "excluir")
	{
		dao.excluir(c.getId());
	}	
	
fabrica.desconectar(); %>

    <td><div align="center" ><a href="listarCliente.jsp?acao=excluir&codigo=<%=c.getId()%>"><img src="botao_excluir_result.png" width="20" height="20" /></a></div></td>
	
    </tr>
    <%} %>
  </table>

10 Respostas

jaboot

oi freis,

Cara, não entendi a sua dúvida. E o que você está fazendo é uma má-prática imensa. Não se chama o DAO pela JSP diretamente.
Você conhece o conceito de mvc? Seria melhor aplicá-la.

Mas posta a dúvida aí que a gente responde anyway.

wbdsjunior

mas qual é o problema? não exlclui?

talvez seja por causa da comparação com a String excluir. para comparar String (e Objetos) usa-se o método equals.

tente:

if ("excluir".equals(request.getParameter("acao"))) { dao.excluir(c.getId()); }

F

Apresenta a seguinte ERRO !

[size=18]java.lang.classcastexception dao.FabricaConexao cannot be cast to Java.SqlStatement[color=red] [/color][/size]

sendo que meu method excluir esta assim ;

public void excluir(int id)
	{
		FabricaConexao conexao = new FabricaConexao();
		conexao.conectar();
		
//		JOptionPane.showMessageDialog(null, "conectou");
		
		try {
						
			Statement st = (Statement) conexao;
			st.executeQuery("DELETE FROM Cliente WHERE id_cli ="+id);
			
			conexao.desconectar();
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, e);
		}
mauricioadl
public void excluir(int id)
	{
		FabricaConexao conexao = new FabricaConexao();
		conexao.conectar();
		
//		JOptionPane.showMessageDialog(null, "conectou");
		
		try {
			// O ERRO EH AQUI troque por conexao.createStatement();
			
			Statement st = (Statement) conexao;
			st.executeQuery("DELETE FROM Cliente WHERE id_cli ="+id);
			
			conexao.desconectar();
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, e);
		}
wbdsjunior

sua FabricaConexao deve retornar uma instancia de java.sql.Statement.

algo como:

FabricaConexao conexao = new FabricaConexao();  
    conexao.conectar();  
          
//  JOptionPane.showMessageDialog(null, "conectou");  
          
    try {  
        Statement st = conexao.getStatement();
        ...
public FabricaConexao {
    ...

    public Statement getStatement() {
        return conexao.createStatement();
    }
}
F

Eu coloquei o createStatement ;

deu certo agora tenho que ver como que eu vou colocar passar por parametro o ID …

por que eu fiz o seguinte para testar eu setei o ID 56 por exemplo e mandei excluir …

e não dava para eu colocar por que ele esta dentro de um " for " la no jsp dai tenho que ver como que vou fazer …

mas valeu pessoal … pela força ae vou tentar aqui ;

Obrigado !

wbdsjunior

freis:
Eu coloquei o createStatement ;

deu certo agora tenho que ver como que eu vou colocar passar por parametro o ID …

por que eu fiz o seguinte para testar eu setei o ID 56 por exemplo e mandei excluir …

e não dava para eu colocar por que ele esta dentro de um " for " la no jsp dai tenho que ver como que vou fazer …

mas valeu pessoal … pela força ae vou tentar aqui ;

Obrigado !

coloque o método para exclusão fora do bloco for (no começo ou no fim da página) e pegue o parametro recebido pela request.

if ("excluir".equals(request.getParameter("acao"))) { dao.excluir(Integer.parseInt(request.getParameter("codigo"))); }

F

então cara foi isso mesmo que eu fiz …

mas acontece o seguinte … eu consigo remover de boa … mas eu queria que ele atualizasse a pagina para mim … mas não é isso que esta acotnecendo obs:

<a href="listarCliente.jsp?acao=excluir&codigo=<%=c.getId()%>">

pq será que ele não puxa ??
só traz para mim se eu clicar duas vezes no botão excluir !

wbdsjunior
freis:
então cara foi isso mesmo que eu fiz ... mas acontece o seguinte ... eu consigo remover de boa ... mas eu queria que ele atualizasse a pagina para mim ... mas não é isso que esta acotnecendo obs:
<a href="listarCliente.jsp?acao=excluir&codigo=<%=c.getId()%>">

pq será que ele não puxa ??
só traz para mim se eu clicar duas vezes no botão excluir !


provavelmente porque e lista os clientes antes de realizar a exclusão.

faça a exlcusão antes de listar os clientes:
<%
    FabricaConexao fabrica = new FabricaConexao();
    Connection conexao = fabrica.conectar();
    JDBCClienteDAO dao = new JDBCClienteDAO(conexao);

    // primeiro exclur
    if ("excluir".equals(request.getParameter("acao")))
    {
        dao.excluir(Integer.parseInt(request.getParameter("codigo")));
    }

    // depois listar
    java.util.List <Cliente> clientes = dao.listarTodos();
    fabrica.desconectar();
%>
F

OK VALEW CARA !

DEU CERTINHO !

OBRIGADO MESMO VALEW

Criado 26 de março de 2012
Ultima resposta 27 de mar. de 2012
Respostas 10
Participantes 4