Banco não é atualizado com JSP e Servlet [RESOLVIDO]

4 respostas
S

Pessoal, estou estudando JSP e Servlet.
Fiz o método alterar e quando utilizo para alterar um contato no banco ele informa que foi alterado, mas no banco não altera.
Classe AlteraContatoLogic

public class AlteraContatoLogic implements BusinessLogic {

	@Override
	public void execute(HttpServletRequest req, HttpServletResponse resp)
			throws Exception {
		System.out.println("Executando a lógica e redirecionando do AlteraContatoLogic");
		
		Contato contato = new Contato();
		
		contato.setId(req.getParameter("id"));		
		contato.setNome(req.getParameter("nome"));		
		contato.setEmail(req.getParameter("email"));
		contato.setEndereco(req.getParameter("endereco"));
		
		ContatoDAO dao = new ContatoDAO();
		dao.altera(contato);
	
		RequestDispatcher rd = req.getRequestDispatcher("/lista-elegante.jsp");
		rd.forward(req, resp);
		System.out.println("Contato alterado AlteraContatoLogic: " + contato.getNome());
	}
}

Classe ContatoDAO Método Altera

public void altera(Contato contato)throws SQLException{
		PreparedStatement pstmt = this.con.prepareStatement("update contatos " +
				"set nome=?, email=?, endereco=? where id=?");
		
		pstmt.setString(1, contato.getId());		
		pstmt.setString(2, contato.getNome());
		pstmt.setString(3, contato.getEmail());
		pstmt.setString(4, contato.getEndereco());		
		pstmt.execute();
		pstmt.close();
	}

Classe ControllerServlet

protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		String business = req.getParameter("business");
		String className = "mvc." + business;
		
		try{
			Class clazz = Class.forName(className);
			BusinessLogic businessLogic = (BusinessLogic)clazz.newInstance();
			businessLogic.execute(req, resp);
		}
		catch (Exception e) {
			throw new ServletException("A lógica de negócios causou uma exceção: " + e);
		}
	}

Atenciosamente.

4 Respostas

surfzera

tenta com pstmt.executeUpdate();

surfzera

não esqueça sempre de colocar tentar de um Try{ catch{ seu bloco indepentende ser for alterar, inserir etc… para você pode pegar o erro .

luciano2

Cara seus parametros devem ser setados de acordo com os bind´s, na ordem que você está setando os parâmetros sua clausula where está comparando id com endereço.

Se você usar pstmt.executeUpdate(); você consegue saber quantas linhas foram alteradas no banco.

Dessa forma você vai saber se realmente houve alteração.

S

Valeu pelas dicas, fiz com o executeUpdate(), mas eram a ordem dos bind’s.
Valeu pessoal.

Criado 10 de maio de 2010
Ultima resposta 10 de mai. de 2010
Respostas 4
Participantes 3