[Resolvido]Como eu faço o metodo main Testar para eu poder testa meu método alterar?

Gente eu estou estudando por uma apostila nela só explica como fazer o método de alterar e não explica como eu faço para testa o método. Podem mi ajudar??
O método é o seguinte:

[code]public void altera(Contato contato) {
String sql = “update contatos set nome=?, email=?, endereco=?, dataNascimento=? where id=?”;
try {
PreparedStatement stmt = (PreparedStatement) 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);
}

}[/code]

Eu vi uns exemplos na net de como fazer o método main testar (mais não deu certo)… E ele fico assim:

[code] 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");    
		       }
		       
	  }[/code]

Desse metodo que eu vi na net eu entendi que ira altera a linha que tem ID 1 (estou certo ??) Mais tambem tem que colocar os novos valores para alterar né?? (Mais não sei onde…)
Deste já obrigado!!

acontece que seu metodo altera retorna void, ou seja, nao tem retorno nenhum. e nessa linha:
if (dao.altera(contato)==1){

vc espera retorno dele, vc precisar arrumar seu metodo para que ele retorne inteiros.

Certo.
Mais se eu coloca o retorno como int eu tenho que declarar no parâmetro um int (né??)
O que eu vou fazer com esse int que fica no parâmetro??

Tem como eu fazer o método main testar, com meu método alterar retornando void??

Primeiro, leia e corrija teu tópico: http://guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Segundo, uma query retorna um int, por que não retorna este int e verifica se está de acordo ou não?

sim, basta que vc crie um metodo para consultar, dai no main vc altera um Contato depois consulta esse Contato e verifica se o mesmo foi alterado corretamente.

public boolean 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 true; } catch (SQLException e) { return false; }

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

Primeiro peço desculpas, por não fazer meu tópico no padrão. Fiz minha conta gora não deu tempo( e não posso ler agora) de ler nada sobre o fórum.(Assim que eu chegar em casa em edito ele pode ser no padrão??)
Meu método agora está assim:

[code]public int altera(Contato contato){
String sql = “update contatos set nome=?, email=?, endereco=?, dataNascimento? where id=?”;
try{
PreparedStatement stmt = (PreparedStatement) 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);   
	          
	     }    
	 } [/code]

Mais quando executo ele da um NullPointerException.

coloca igual eu fiz pra vc. se nao der certo mesmo assim, coloque a exception ae pra nois ve

Mauricioadl
Eu fiz do seu jeito mais da um NullPointerException na linha 16 ( no if ).

Exception in thread “main” java.lang.NullPointerException
at br.com.caelum.jdbc.TestaAlterar.main(TestaAlterar.java:16)

coloca todo o metodo main pra mim ver.

O objeto contato que tu estás passando para o método alterar deve estar nulo. Poste teu main…

O meu MAIN está a mesma coisa… do que postei antes…

[code]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”);
}

} [/code]

Tu tens que setar os outros parâmetros do objeto contato(nome, email, etc…), se não os getters dentro do método altera vão retornar nulo.

Tipo assim???

[code]public class TestaAlterar {

	  public static void main(String[] args) {  
		   Contato contato = new Contato();  
		           contato.setId(1);
                               contato.setNome("Alexnadre");
                               contato.setEmail("sdsadas@hotmail.com");
                               contato.setEndereco("Rua:***************");
		           ContatoDAO dao = new ContatoDAO();  
		    
		         
		            if (dao.altera(contato)){  
		            	
		        	    System.out.print("Contato alterado com sucesso!");   
		        	    }else{   
		        	   System.out.print("Ocorreu um erro na alteraçao do contato");   
		        	    } 
		       
	  }

}[/code]

Isso, a dataNascimento também. Teste aí e veja se funciona!

Deu certo
VLW!!!

Agora vou tentar no meu formulário (JFrame).

Qualquer coisa eu retorno… rsrs

coloque os codigos entre a tag “[code ]” por favor, assim fica ruim de ler