Delete table jsp

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 …

[code]
<%

FabricaConexao fabrica = new FabricaConexao();
Connection conexao = fabrica.conectar();

JDBCClienteDAO dao = new JDBCClienteDAO(conexao);

java.util.List <Cliente> clientes = dao.listarTodos();

%>

<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>
<%} %>
Id Nome Fantasia Numero Bairro Cidade Alterar Excluir
[/code]

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.

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()); }

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);
		}

[code]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);
	}

[/code]

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

algo como:

[code]FabricaConexao conexao = new FabricaConexao();
conexao.conectar();

// JOptionPane.showMessageDialog(null, “conectou”);

try {  
    Statement st = conexao.getStatement();
    ...[/code]

[code]public FabricaConexao {

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

}[/code]

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 !

[quote=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 ![/quote]

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"))); }

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 !

[quote=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 ![/quote]
provavelmente porque e lista os clientes antes de realizar a exclusão.

faça a exlcusão antes de listar os clientes:

[code]<%
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();

%>[/code]

OK VALEW CARA !

DEU CERTINHO !

OBRIGADO MESMO VALEW