Erro com Caché e Java

2 respostas
VantuilJose

E aí galera do Guj?

Tô com um erro que não entendi muito bem nesse código:

try{
            CacheQuery cq = Pessoas.query_maiorCodigo(Cache.conecta());//É uma classe disponibilizada pelo Caché
            ResultSet rs = cq.execute();
            //rs.first();
            rs.first();
            while (rs.next())
            {
                    System.out.println(rs.getString(1));
            }
            rs.close();

         }catch(Exception e){ e.printStackTrace(); }

O erro reportado é:
[color=red]java.sql.SQLException: Fetch type is TYPE_FORWARD_ONLY
at com.intersys.jdbc.CacheResultSet.first(CacheResultSet.java:699) [/color]

Tô trabalhando com Java e Caché, o caché faz um bind das suas classes em código Java, pra facilitar a persitência, mas esse erro tá me quebrando a cabeça!!!

Alguém tem alguma idéia do que está acontecendo?

2 Respostas

ViniGodoy

Seu resultset só é navegável em um sentido, para frente.
Ele inicia na primeira linha e você só pode ler seguindo a diante.

Por isso, comandos de navegação (como o first) não vão funcionar. O first é usado para, de qualquer ponto do resultset, voltar o cursor ao início. E esse método dispara essa exception em resultsets desse tipo.

Por padrão o resultset já é criado no início. Portanto, elimine a linha do first e o código deve funcionar normalmente.

VantuilJose

Valeu ViniGodoy, eu tinha suposto isso, mas ainda naum sabia pq.
Mas depois descobri que foi a projeção entre as classes do caché e do Java que estavam incorretas, entaum corrigi a query na classe e o método passou a funcionar.

O problema é que eu voltava pro primeiro, por que ele me dava apenas um resultado, e eu esperava mais, por isso pensei que o resultSet estivesse com o ponteiro no final.
Mas depois que corrigi as projeções deu tudo certinho, mas continuando só navegando pra frente…
Bem chatinho né, esse negócio de só navegar pra frente, tenho que colocar tudo num arraylist pra poder tratar a vontade!!!

Obrigado!!!

Criado 10 de setembro de 2009
Ultima resposta 10 de set. de 2009
Respostas 2
Participantes 2