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
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: