Erro executeQuery

3 respostas
C

Estou tentando fazer uma consulta:

String sql = "select * from cliente where cpf=?";
ResultSet rs=null;
try{         
   PreparedStatement stmt = connection.prepareStatement(sql);
   stmt.setString(1, cliente.getCpf());
        
   System.out.println("antes d consultar");
   rs = stmt.executeQuery();
        
   System.out.println("retorno da consulta: "+rs.getString("cpf"));
   while (rs.next()) {
     cliente.setCpf(rs.getString("cpf"));	        	
   }
        
        //return cliente; 
}

E aqui está a saída: antes de consultar deu erro sql:

java.sql.SQLException: Before start of result set

3 Respostas

F

acho que você esta atribuindo que o resultset é null, tenta colocar o objeto e atribuir para o rs ResultSet rs ;

R

Acredito que o erro está nesse trecho, você acessa o resultSet antes de estar no While.

Isso não pode porque o a condição do while “rs.next()” na realidade move o resultSet para o próximo resultado além retornar um boolean que diz se tem um próximo registro. Acessando fora, sem invocar esse método o resultSet ainda não foi movido para o registro.

Tente tirar essa linha ou coloque dentro do While.

Francisco_Chaves

Olá amigo, como Ricardophp29 mencionou, você está tentando imprimir o retorno da consulta diretamente no ResultSet, deve ser esse o problema, tente imprimir o valor desejado do Objeto Cliente após ter recebido os dado(s) da consulta.

while (rs.next()) {
     cliente.setCpf(rs.getString("cpf"));	        	
}
System.out.println("retorno da consulta: " + cliente.getCpf());
Criado 22 de maio de 2017
Ultima resposta 22 de mai. de 2017
Respostas 3
Participantes 4