freis
Março 26, 2012, 7:11am
#1
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();
%>
Id
Nome Fantasia
Numero
Bairro
Cidade
Alterar
Excluir
<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>
<%} %>
[/code]
jaboot
Março 26, 2012, 8:12am
#2
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());
}
freis
Março 26, 2012, 9:20am
#4
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]
freis
Março 26, 2012, 9:54am
#7
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")));
}
freis
Março 26, 2012, 11:45am
#9
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]