Problema em criar ponte JDBC-ODBC

Olá pessoal, estou com um problema ao tentar criar uma ponte JDBC-ODBC para acessar um banco de uma fonte de dados ODBC (Que no caso essa fonte seria do banco SYBASE 9)

Estou usando o seguinte código:

package Conexao;
import java.sql.*;
import javax.swing.JOptionPane;
public class AcessoDominio {
    final private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    final private String url = "jdbc.odbc:sybase";
    final private String usuario = "Externo";
    final private String senha = "123456";
    private Connection conexao; //Cria a conexão propriamente dita
    public Statement statement; //Abre caminho para a conexão com o banco de dados
    public ResultSet resultset; //Armazena os resultados das consultas SQL
}

Que problema?

Por que você não usa o driver do sybase diretamente ?

Quero usar uma fonte ODBC pois eu vou ter que dela pegar os registros e jogar em um outro banco o Firebird…

O erro é: java.sql.SQLException: No suitable driver

Acho que você está copiando isso de um livro, não? É que você usou “jdbc PONTO odbc” em vez de “jdbc DOIS PONTOS odbc”, ou seja, “jdbc:odbc:sybase”.

Tome mais cuidado ao copiar os exemplos. Você tem uma apostila para saber o que vai nesse parâmetro? (Dica: não é o nome do fornecedor de banco de dados (Sybase) e sim o nome da fonte de dados ODBC cadastrada no Painel de Controle.)

Mesmo usando o Sybase apenas como fonte, é mais rápido e mais eficiente se você usar o driver do próprio Sybase, ou então o JTDS, em vez de usar o ODBC, que tem muitas limitações. Para ter uma idéia de como o ODBC é tosco, experimente acessar os campos de um registro retornado por uma query fora da ordem. Pode ser que você tenha problemas.

Ok !

Agora vocês saberiam me informar onde posso achar o driver do Sybase e um driver do Firebird bom, pois o que eu uso do firebird quando tento usar o comando first(); ele dá um erro: Result set is TYPE_FORWARD_ONLY

Desde já agradeço !

Isso é um problema de sua aplicação, não do driver do Firebird.

Se você vai usar “first” (normalmente nunca se usa “first” nem “last”), então você precisa passar alguns parâmetros para o método createStatement.

Estou usando o seguinte código, já com parâmetros :

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); } }