Problemas com método que realiza pesquisa no banco de dados
5 respostas
G
Gustavo_Valeretto
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.
publicContatopesquisarContato(intid){Contatocontato=newContato();try{PreparedStatementstmt=this.con.prepareStatement("select * contato where id=?");stmt.setLong(1,contato.getId());stmt.execute();stmt.close();}catch(SQLExceptione){thrownewRuntimeException(e);}returncontato;}
onde vc recupera os dados do seu PreparedStatement ??
De uma lida de novo na apostila, especialmente sobre o DAO.
G
Gustavo_Valeretto
Tinha esquecido do ResultSet
publicContatopesquisarContato(intid){Contatocontato=newContato();try{PreparedStatementstmt=this.con.prepareStatement("select * contato where id=?");ResultSetrs=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(SQLExceptione){thrownewRuntimeException(e);}returncontato;}
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.?
thiago.correa
[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!)