Problema:ResultSet.next was not called

Pessoal, ao rodar minha aplicacao ocorreu o seguinte erro:

o codigo é o seguinte:

[quote] while (!rs.isAfterLast() && coluna <= qtdMeses
&& rs.getString(“RAZAOSOCIAL”) == csa_atual) {
if (mesAtual != 12)
mesAtual = dataIni.getMonth() + coluna;
else if (coluna == 0)
mesAtual = 12;
else
mesAtual = 1;
if (rs.getDate(“DTFECHAMENTO”).getMonth() != mesAtual) {
Matriz[linha][coluna * 2 + 1] = new Double(0);
Matriz[linha][coluna * 2 + 2] = new Double(0);
} else {
Matriz[linha][coluna * 2 + 1] = new Double(rs
.getString(“QTDOS”));
Matriz[linha][coluna * 2 + 2] = new Double(rs
.getString(“VALOROS”));
rs.next();
}[/quote]

será que é porque eu nao estou recebendo o boolean que o metodo next retorna?!

Obrigado,
Fernando

 while (!rs.isAfterLast() && coluna <= qtdMeses
&& rs.getString("RAZAOSOCIAL") == csa_atual) { 

É necessário fazer um rs.next() antes de rs.getString( “RAZAOSOCIAL” ).

Obrigado!
vou testar…
mas vc pode me falar pq isso?

Seria pq eu presumi que o cursor do resultset estaria no primeiro registro,
mas na verdade ele nao comeca no comeco :?: :?:

nao poderia resolver dando um rs.first() antes?

Grato,
Fernando Almeida

Acho que o cursor fica antes do primeiro registro…

realmente…
acho q o cursor fica antes do primeiro…

  • agora minha duvida é:
    pq .next()
    e nao .first()?!

Se não me engano alguns drivers não implementam .first().

mais uma duvida pessoal!

meu cursor esta no ultimo registro do meu result set
e eu dou um rs.next()

oq acontece?
a-) ele retorna false e leva o cursor pra o proximo registro (fazendo com que a funcao isAfterLast() retorne true)
b-) ele retorna true e leva o cursor pra o proximo registro (fazendo com que a funcao isAfterLast() retorne true)
c-) ele retorna false e nao anda com o cursor
d-) ele retorna true e nao anda com o cursor
e-) n.d.a

Espero resposta,
Obrigado!!

Ele retorna false. Imagino eu que o método isAfterLast() seja true após esta chamada.

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/ResultSet.html

Nunca ouvi falar de “isAfterLast”. O método padrão de se andar em um recordset é algo como

while (rs.next()) {
}