Olá pessoal aqui estou novamente com uma dúvida, eu estou acompanhando e estudando pela apostila da caelum de desenvolvimento web e não estou conseguindo excluir dados do banco fiz uma classe ContatoDAO onde tem a implementação de todos os métodos do CRUD mas eu não estou conseguindo deletar algum dado do banco, consegui inserir e listar mas não consigo deletar, acredito que minha implementação da classe testeDelete está errada alguém pode me ajudar?
package caelum.jdbc.dao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import caelum.modelo.Contato;
import celum.jdbc.ConnectionFactory;
public class ContatoDAO {
private Connection connection;
public ContatoDAO() {
this.connection = new ConnectionFactory().getConnection();
}
public void adiciona(Contato contato) {
String sql = "insert into contatos "
+ "(nome, endereco, email, dataNascimento)"
+ "values (?,?,?,?)";
try {
// prepara para insercao
PreparedStatement stmt = connection.prepareStatement(sql);
// seta os valores dos parametros
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEndereco());
stmt.setString(3, contato.getEmail());
stmt.setDate(4, new Date(contato.getDataNascimento()
.getTimeInMillis()));
// execute e fecha
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public List<Contato> getLista() {
try {
List<Contato> contatos = new ArrayList<Contato>();
PreparedStatement stmt = this.connection
.prepareStatement("select * from contatos");
// executa a query
ResultSet rs = stmt.executeQuery();
while (rs.next()) {// meto next navega pelos registros
Contato contato = new Contato();
contato.setId(rs.getLong("id"));
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
// montando a data atraves do calendar
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
// add objeto a lista
contatos.add(contato);
}
// fecha tudo
rs.close();
stmt.close();
return contatos;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public void altera(Contato c) {
String sql = "update contatos set nome=?, email=?, endereco=?,"
+ "dataNacimento=?, where id=?";
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, c.getNome());
stmt.setString(2, c.getEmail());
stmt.setString(3, c.getEndereco());
stmt.setDate(4, new Date(c.getDataNascimento().getTimeInMillis()));
stmt.setLong(5, c.getId());
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public void remove(Contato c) {
try {
PreparedStatement stmt = connection
.prepareStatement("delete from contatos where id=?");
stmt.setLong(1, c.getId());
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
e agora a classe testeDelete
package caelumTeste;
import java.util.Calendar;
import java.util.List;
import caelum.jdbc.dao.ContatoDAO;
import caelum.modelo.Contato;
public class testeDelete {
public static void main(String[] args) {
Contato cont = new Contato();
cont.setNome("Felipe Alves");
cont.setEmail("felipealves@hotmail.com");
cont.setEndereco("Rua Dom Cardoso");
cont.setDataNascimento(Calendar.getInstance());
ContatoDAO dao = new ContatoDAO();
dao.adiciona(cont);
dao.remove(cont);
}
}