RESOLVIDO - Problema com ResultSet - Quantidade de Registros

3 respostas
V

Pessoal, o problema é que criei um metodo para pegar a quantidade de registros do resultset, mas depois deusar este metodo se eu tentar pegar um valor do resultset ele dá erro

isso foi usado numa tela de login, para saber se o usuario tem cadastro e retornar uma string que diz o tipo de usuario que ele é

o metodo para saber a quantidade de registros é assim:

public int getQuant(ResultSet rs){
int contador = 0;

try{
      while (rs.next()){
         contador++;
      }
      
      
   }catch(Exception e){
      e.printStackTrace();
   }
   
   return contador;
}

if (sgbd.getQuant(rs)==1){ //verifica se o usuario existe
            rs.beforeFirst();      //antes da primeira posicao do resultset
            rs.next();              //vai para primeira posicao
           //pego o valor co campo tipo
           retorno = rs.getString("tpusu");

       }

o erro dado, e:

06/10/23 01:34:11 org.postgresql.util.PSQLException: ResultSet não está posicionado corretamente, talvez você precise chamar next.

Alguém tem alguma idéia do que pode ser?

Venom

3 Respostas

D

é o seguinte , quando vc executou o Loop ()

while (rs.next()){ contador++; }

vc moveu os registros do seu ResultSet para o fim , sendo assim , c vc quiser
voltar ao inicio dos registros dentro de seu ResultSet vc tem que fazer assim

rs.first()

para que ele volte ao inicio do seus registros , mais para isso , vc tem que tornar o seu ResultSet rolável , usando o seguinte código quando for fazer a consulta no banco de dados:

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

desse modo vc pode rolar o ResultSet para frente e para traz …
bom qualquer duvida é so dar um toque , espero ter ajudado

V

valew diego

era isso mesmo

muito obrigado

V
Bom dia! Espero que seja útil:
public static int getResultSetSize(ResultSet resultSet) {
	    int size = -1;

	    try {
	        resultSet.last();
	        size = resultSet.getRow();
	        resultSet.beforeFirst();
	    } catch(SQLException e) {
	        return size;
	    }

	    return size;
	}
Criado 23 de outubro de 2006
Ultima resposta 23 de out. de 2006
Respostas 3
Participantes 3