Como faço uma classe main para testar alterar no banco de dados

galera eu fiz uma cnexão com o bd mysql e criei um inclui que funcionou, um para listar e tbm funcionou perfeitamente…mas eu num consigo criar uma para alterar nem para excluir…

o código na classe ContatoDAO…o método q altera e exclui é o seguinte…

[code] public void altera(Contato contato){
String sql = “update contatos set nome=?, email=?, endereco=?, dataNascimento? where id=?”;
try{
PreparedStatement stmt = connection.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();
	}catch (SQLException e){
		System.out.println("erro ao alterar");
		throw new RuntimeException(e);
	}
}
public void remove(Contato contato) {

	try{
		PreparedStatement stmt = connection.prepareStatement("delete from contatos where id=?");
		
		stmt.execute();
		stmt.close();
	}catch (SQLException e){
		System.out.println("deu erro ao remover");
		throw new RuntimeException(e);
	}

}[/code]

ai eu num sei como criar um main para testar o exclui e alterar…

ajudem por favor

Vamos la?
Seguinte, voce tem a classe dao, agora na main voce vai instanciar um objeto do tipo dao e chamar esse metodo passando como parametro o seu objeto (já criado na main) do tipo Contato.

Para ter alum tipo de interação coloque algum retorno no metodo… tipo um int, dai se ele executar com sucesso vai retornar um valor 1, dai na main voce faz in if comparando o retorno do metodo com 1…

PS: No segundo metodo voce não fez o stmt.setLong(1, contato.getId)

como assim?

no main eu usei o seguinte

[code]package br.com.caelum.jdbc.teste;

import br.com.caelum.jdbc.dao.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;

public class TesteAltera {
public static void main(String[] args) {
Contato contato = new Contato();

	contato.setId(1);
	

ContatoDAO dao = new ContatoDAO();

dao.altera(contato);

}

}
[/code]

o que mais precisaria?

beleza, agora como voce sabe que a dao funcionou?

na sua dao voce coloca o seguinte:

[code]public int altera(Contato contato){
String sql = “update contatos set nome=?, email=?, endereco=?, dataNascimento? where id=?”;
try{
PreparedStatement stmt = connection.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();  
    return 1;
}catch (SQLException e){  
    System.out.println("erro ao alterar");  
    throw new RuntimeException(e); 
    return 0;
}  

}[/code]

E na sua main o seguinte bloco:

if (dao.altera(contato)==1) System.out.print("Contato alterado com sucesso!");
else System.out.print("Ocorreu um erro na alteraçao do contato");

tendeu?

tendi sim mais deu uma null pointer exception…onde eu vo joga os dados que altera?

[code]public class TesteAltera {
public static void main(String[] args) {
Contato contato = new Contato();
contato.setId(1);
ContatoDAO dao = new ContatoDAO();

if (dao.altera(contato)==1) System.out.print("Contato alterado com sucesso!");  
else System.out.print("Ocorreu um erro na alteraçao do contato");  

dao.altera(contato);

}

}[/code]

eu jah dei crtl + o intaum todos os imports jah estão ai…

Quando voce chama o metodo no if, voce não precisa chama-lo de novo… retite a linha 10 do codigo acima!
e me fala o que deu

[quote=leenno]Quando voce chama o metodo no if, voce não precisa chama-lo de novo… retite a linha 10 do codigo acima!
e me fala o que deu[/quote]

msm coisa nullpointerexception

crie um construtor para o objeto contato.