Duvida codigo update e delete

Bom dia a todos, estou seguindo a apostila web fj21, estou na parte de fazer update e delete.

Poderia me ajudar com o codigo de update e delete, pois no arquivo DAO eu fiz assim, porem nao estou conseguindo fazer o main para poder executar as query’s. :oops:

Arquivo ContatoDAO.java

[code]public void altera(Contato contato){

	String sql = "update contatos set nome=?, email=?, endereco=?, dataNascimento=? where id=?";
	
	try {
		PreparedStatement stmt = conn.prepareStatement(sql);
		stmt.setString(1, contato.getNome());
		stmt.setString(2, contato.getEmail());
		stmt.setString(3, contato.getEndereco());
		stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
		stmt.setLong(5, contato.getId());
	 
		stmt.execute();
		stmt.close();
	 
	}//fim try
	catch (SQLException e) {
		throw new RuntimeException(e);
	}//fim catch
}//fim altera

public void remove(Contato contato){

	try {
		PreparedStatement stmt = conn.prepareStatement("delete from contatos where id=?");
		stmt.setLong(1, contato.getId());
		stmt.execute();
		stmt.close();
	}//fim try
	catch (SQLException e) {
		throw new RuntimeException(e);
	}//fim catch
}//fim deletar

}
[/code]

Na hora de alterar algum dado, eu segui mais ou menos o codigo de adicionar um contato no banco, porem sem sucesso.

Qual o erro?

Ele nao esta alterando, ele esta adicionando um outro contato.

Ao invés de passar o um Contato, passe apenas o id, sugiro que troque o stmt.execute por stmt.executeUpdate


public void altera(int id)  {
.
.
.
stmt.executeUpdate();
stmt.close();
.
.
.
}

[quote=leocantanhede]Ao invés de passar o um Contato, passe apenas o id, sugiro que troque o stmt.execute por stmt.executeUpdate


public void altera(int id)  {
.
.
.
stmt.executeUpdate();
stmt.close();
.
.
.
}

[/quote]
1 - O código é update, ou seja, vai executar uma atualização.
2 - É um preparedStatement, deve ser feito com execute.

Por inserir outro contato, o problema está na chamada do método, você não deve estar chamando o alterar.

Posta o jsp. Deve ser a chamada do método mesmo.

Amigos, eu achei meu erro, eu estava chamando o método errado, por isso nao fazia o update no banco.

segue o codigo do main

[code]public class TestaAlterar {

public static void main(String[] args){
	
	ContatoDAO dao = new ContatoDAO();
	
	Contato contato = new Contato();
	contato.setId(3);
	contato.setNome("teste");
	contato.setEmail("teste@msn.com");
	contato.setEndereco("Rua dos doido, 1357");
	contato.setDataNascimento(Calendar.getInstance());
	
	dao.altera(contato);// o erro estava aqui, pois estava dao.adiciona antes, dae mudei para altera
	System.out.println("Alterado!");
	System.out.println("Conexão Fechada!");
}

}[/code]

agora o codigo de deletar

[code]public class TestaRemover {

public static void main(String[] args){
	
	ContatoDAO dao = new ContatoDAO();
	
	Contato contato = new Contato();
	
	contato.setId(6);// id da posicao no banco
	contato.setDataNascimento(Calendar.getInstance());
	
	dao.remove(contato);
	System.out.println("Removido!");
	System.out.println("Conexão Fechada!");
}

}[/code]

Lembrando que o esquema do arquivo DAO esta no primeiro post.
Se alguém quiser ajudar com alguma dica, fica a vontade, pois existe várias maneiras de fazer isso. Obrigado.