Erro ao tentar rolar em um resultset

Quando tento rolar em um ResultSet ocorre o seguinte erro: Result set is TYPE_FORWARD_ONLY

Estou usando o banco de dados firebird, quando uso o next(); não acontece nenhum erro porém com o first(); acontece isso.

Já passei alguns parâmetros do createStatement e ainda continua dando o mesmo erro. Segue abaixo o código que estou usando:

public void executeSQL(String sql){ try { statement = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); resultset = statement.executeQuery(sql); } catch (SQLException ex) { JOptionPane.showMessageDialog(null,"Não foi possível executar o sql, erro: "+ex); } }

Tenta declarar seu statement assim:

statement = con.createStatement(ResultSet.TYPE_FORWARD_ONLY , ResultSet.CONCUR_READ_ONLY);

Continua do mesmo jeito segue a print

Voce poderia colocar o código da sua classe Clientes.java para ajudar na análise?

Segue o código da classe Clientes:

package Conexao;

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class AcessoFirebird {
    Connection con;
    public Statement statement;
    public ResultSet rs;
    

    public Connection conectar()
    {
        try {
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:c:\\Documents and Settings\\Administrador\\Desktop\\TesteFirebird\\DADOS.fdb","SYSDBA","masterkey");
            JOptionPane.showMessageDialog(null,"Conectado ao banco com sucesso !");
        } catch (ClassNotFoundException ex) {
            JOptionPane.showMessageDialog(null,"Erro ao conectar, erro: "+ex);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Erro ao conectar, erro: "+ex);        }
    return con;
    }
    public void desconectar()
    {
        try {
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(AcessoFirebird.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void executeSQL(String sql){
        try {
            statement = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
            rs = statement.executeQuery(sql);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Não foi possível executar o sql, erro: "+ex);
        }
        

    }

}

Post Editado com a classe de acesso ao banco ^^

Bah, Desculpa John, a classe que eu queria era a de acesso ao banco. tem como vc editar seu post?

Seu erro ta dizendo que seu ResultSet é só de ida, só vai pra frente.

Tenta criá-lo desta forma:


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

Engraçado que quem ta “piando” aí é o driver do FireBird, essa parte do erro “not capable” da a entender que estes resultSets não serão “Scrollaveis” .

[]'s

Mesmo problema :confused:

Bom vamos lá, tenho o seguinte código para tentar buscar do banco as informações que quero:

package Arquivo;
import Conexao.AcessoFirebird;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class Clientes extends javax.swing.JFrame {

    AcessoFirebird con_clientes;
    
    public Clientes() {
        initComponents();
        con_clientes = new AcessoFirebird();
        con_clientes.conectar();
        con_clientes.executeSQL("select nome,endereco,telefone from clientes");
        try {
        con_clientes.rs.first();
        
            tfNome.setText(con_clientes.rs.getString("nome"));
            tfEndereco.setText(con_clientes.rs.getString("endereco"));
            tfTelefone.setText(con_clientes.rs.getString("telefone"));
         } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Erro: "+ex);
        }
    }

Dessa forma dá erro, quando tento com o next no lugar do first(); na linha 16 roda certo, porém não sei se os registros serão roláveis dentro do resultset.

Devo enfatizar também que eu não consegui compilar a classe de acesso ao banco se isso interfere em alguma coisa.

Galera, usei outro driver FireBird o conhecido como “Jaybird” e tudo funcionou perfeitamente, Obrigado pelo apoio !

Para quem estiver com o mesmo erro substitua seu driver atual do firebird para o java pelo do seguinte link, escolha o mais atual e o que está de acordo com a versão do seu JDK: