Problemas com método que realiza pesquisa no banco de dados

Boa tarde galéra, estou estudando a apostila fj21 da caelum,e em um exerciçio tenho que criar um método q faz uma pesquisa no banco de dados q me retorna um objeto,de acordo com o id informado como parametro.Só q estou tendo problemas.

public Contato pesquisarContato(int id){
		Contato contato = new Contato();
		try{
			PreparedStatement stmt = this.con.prepareStatement("select * contato where id=?");
			stmt.setLong(1,contato.getId());
			stmt.execute();
			stmt.close();
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
		
		return contato;
	}

E que problemas seriam estes?!

onde vc recupera os dados do seu PreparedStatement ??

De uma lida de novo na apostila, especialmente sobre o DAO.

Tinha esquecido do ResultSet

public Contato pesquisarContato(int id){
		Contato contato = new Contato();
		try{
			PreparedStatement stmt = this.con.prepareStatement("select * contato where id=?");
			ResultSet rs = stmt.executeQuery();
			//stmt.setLong(1,contato.getId());
			contato.setId(rs.getLong("id"));
			contato.setNome(rs.getString("nome"));
		    contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));
			rs.close();
			stmt.close();
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
		
		return contato;
	}

mas contina dando erro

com.mysql.jdbc.JDBC4PreparedStatement@16897b2: select * contato where id=** NOT SPECIFIED **
Exception in thread "main" java.lang.RuntimeException: java.sql.SQLException: No value specified for parameter 1
	at br.com.caelum.agenda.dao.ContatoDAO.pesquisarContato(ContatoDAO.java:108)
	at br.com.teste.TestaInsere.main(TestaInsere.java:25)
Caused by: java.sql.SQLException: No value specified for parameter 1
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1072)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:986)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:981)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
	at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2546)
	at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2522)
	at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2448)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2202)
	at br.com.caelum.agenda.dao.ContatoDAO.pesquisarContato(ContatoDAO.java:99)
	... 1 more

No meu modelo Contato o id eh do tipo Long pq no banco dados o tipo do id eh BigInt

mas no método eu estou passando um int cmo argumento será isso o problema.?

[size=24]Caused by: java.sql.SQLException: No value specified for parameter 1 [/size]

eheheh que maldade, mas tá aí o erro![
Você não atributiu nenhum valor ao bind do teu select, que no caso seria preparedStatement.setInt(idContrato) onde idContrato é uma variável do tipo inteira que contém o valor do id do contrato procurado (ufa!)

hauhauhauhauhauhauhauha

brigadão brother…

vlw véi…