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.
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.