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:
packageConexao;importjava.sql.*;importjavax.swing.JOptionPane;publicclassAcessoDominio{finalprivateStringdriver="sun.jdbc.odbc.JdbcOdbcDriver";finalprivateStringurl="jdbc.odbc:sybase";finalprivateStringusuario="Externo";finalprivateStringsenha="123456";privateConnectionconexao;//Cria a conexão propriamente ditapublicStatementstatement;//Abre caminho para a conexão com o banco de dadospublicResultSetresultset;//Armazena os resultados das consultas SQL}
Por que você não usa o driver do sybase diretamente ?
J
johndaltoon
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
E
entanglement
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.)
E
entanglement
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.
J
johndaltoon
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 !
E
entanglement
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.
J
johndaltoon
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);
}
}