Hsqldb

Olá amigos!!

Estou criando uma simples aplicação com uma JTable, mas meu banco de dados (HSQLDB) esta impedindo ela de funcionar!! :evil:

deem uma olhada no código!!!

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import javax.swing.table.AbstractTableModel;

public class ModeloTabela extends AbstractTableModel
{
    private ResultSet rs;
    private ResultSetMetaData rsMD;
    
    public ModeloTabela()
    {
        super();
        
        // Se conecta com o BD
        Persistencia.conectar();

        // Faz a consulta e obtém os meta dados
        rs = Persistencia.consultar();
        rsMD = Persistencia.obterMetaDados();
   }
    
    public Object getValueAt(int r, int c)
    {
        Object valor = null;
        
        try
        {
            rs.absolute(r + 1);
            valor = rs.getObject(c);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(1);
        }
        
        return valor;
    }
    
    public int getRowCount()
    {
        int numLinhas = 0;
        
        try
        {
           rs.last();
           numLinhas = rs.getRow();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(1);
        }
        
        return numLinhas;
    }
    
    public int getColumnCount()
    {
        int numColunas = 0;
        
        try
        {
            numColunas = rsMD.getColumnCount();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(1);
        }
        
        return numColunas;
    }
    
    public String getColumnName(int c)
    {
        String nome = null;
        
        try
        {
            nome = rsMD.getColumnName(c + 1);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(1);
        }
        
        return nome;
    }
}

Eis o erro:

java.sql.SQLException: ResultSet was set to forward only
	at org.hsqldb.jdbcDriver.sqlException(Unknown Source)
	at org.hsqldb.jdbcDriver.sqlException(Unknown Source)
	at org.hsqldb.jdbcResultSet.last(Unknown Source)

Se tiver alguma coisa errada me digam…se não…digam outra coisa!!! :lol:

Cara…

Acho que se você colocar o código da classe Persistencia, ajudará a análise do erro! :slight_smile:

bem…ae vai o código da persistência:

public class Persistencia
{
    private static Connection conexao;
    private static Statement stmt;
    private static ResultSet rs;
    private static ResultSetMetaData rsMD;
        
    public static void conectar()
    {
        try
        {
            Class.forName("org.hsqldb.jdbcDriver");
            conexao = DriverManager.getConnection("jdbc:hsqldb:Banco\\banco", "sa", "");
            stmt = conexao.createStatement();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(1);
        }
    }
    
    
    public static ResultSet consultar()
    {
        String sql = "SELECT * FROM Lista";
        
        try
        {
            // Faz a consulta
            rs = stmt.executeQuery(sql);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(1);
        }
        
        return rs;
    }
    
    public static ResultSetMetaData obterMetaDados()
    {
        try
        {
            rsMD = rs.getMetaData();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(1);
        }
        
        return rsMD;
    }
    
    public static void adicionar(String rg, String nome)
    {
        String sql = "INSERT INTO Lista VALUES (" + rg + ",'" + nome + "')";
        
        try
        {
            stmt.execute(sql);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(1);
        }
    }

}

olha só gente…preciso muito disto…eu acho que é pode ser o HSQLDB, pois criei este código baseado em outros exemplos

Olá,

Alguns drivers JDBC não suportam alguns metódos, por razões de limitações do Bando de dados. O HSQLDB por ser um banco pequeno, provavelmente não suporta várias métodos. Na documentação do driver dele vc encontra todos os métodos que ele nõa suporta.

de acordo com o erro que vc passou eu vou chutar que estes dois métodos não são suportados:

rs.last(); ... rs.absolute(r + 1); [quote] [/quote]