Problemas com DAO

Ola galera, eu to seguindo uma apostila ae e tem um exercicio que é o seguinte:
[color=green] 2) Crie o método pesquisar que recebe um id (int) e retorna um objeto do tipo Contato.[/color]

entao eu tenho: ContatoDAO.java e TestaPesquisar.java

ContatoDAO.java

//o metodo Pesquisar
public Contato pesquisar(int codigo) throws SQLException{

		PreparedStatement valor = connection.prepareStatement("select * from contatos where id=?");
		valor.setInt(1, codigo);
		
		ResultSet rs = valor.executeQuery();
		
		Contato contatoOK = new Contato();
		[color=red]contatoOK.setNome(rs.getString("nome"));[/color]
		contatoOK.setEndereco(rs.getString("endereco"));
		contatoOK.setEmail(rs.getString("email"));
		
		rs.close();
		valor.close();
		
		return contatoOK;
	}
//FIM Pesquisar

TestaPesquisar.java

public class TestaPesquisa {
public static void main(String[] args) throws SQLException {

	ContatoDAO dao = new ContatoDAO();
	[color=red]Contato selecionado = dao.pesquisar(1); [/color]
	
	int testa = selecionado.getId();
	
	if(testa != 0){
		System.out.println("ID selecionada: " +selecionado.getId());
		System.out.println("Nome completo: " +selecionado.getNome());
		System.out.println("Email: " +selecionado.getEmail());
		System.out.println("Endereco: " +selecionado.getEndereco());			
	} else 
		System.out.println("ID nao encontrada...");
}

}

Eu consigo executar ele normal porem nao aparece nada no console,somente que tem erro nas duas linhas em vermelho acima. Alguem pode me ajudar?! Valeu, Abraxx!

Cara você poderia postar o erro que da?

Nao sei se deve ser isso mas… você não preica iterar pelo resultado da pesquisa pelo menos uma vez?

Porque se voce tentar usar o objeto rs direto de quando ele vem do banco ele se encontra em uma posição nula…

Coloca o erro pra gente saber o que está errado!

rs.next()

eu to conseguindo rodar o programa normal, porem no console ao inves de aparecer o contato que eu pesquisei aparece o erro:

Exception in thread "main" java.sql.SQLException: Before start of result set at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926) at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:835) at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5571) at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5491) at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5531) at br.com.caelum.jdbc.dao.ContatoDAO.pesquisar(ContatoDAO.java:75) at br.com.caelum.jdbc.modelo.TestaPesquisa.main(TestaPesquisa.java:11)

[quote=Murl]Nao sei se deve ser isso mas… você não preica iterar pelo resultado da pesquisa pelo menos uma vez?

Porque se voce tentar usar o objeto rs direto de quando ele vem do banco ele se encontra em uma posição nula…

Coloca o erro pra gente saber o que está errado!

rs.next() [/quote]

aee cara, valeu mesmooo!, testei agora aki e deu certo, tbm adicionei um

valor.execute();

vlew msm, caso resolvido =]]