JAVA – Conexao odbc direta para arquivos .dbf


imagem jdbc

Bom dia galera.

Bom, se você é programador Java, pode ter se deparado já com extensões de arquivos .dbf principalmente se teve que migrar alguma base de dados de uma tecnologia antiga, e não vou citar o Clipper que por incrível que pareça ainda tem aplicações rodando por aí.

Em um belo dia me vi tendo que resolver esse problema, usando o Windows tem essa questão do Odbc, adicionar uma fonte de dados do sistema, driver do acces, mas por algum motivo estranho o… Distinto driver não estava presente, particularidades lindas que só o Office e a Microsoft nos presenteiam no dia-a-dia.

Então encontrei essa maravilhosa biblioteca, a DBF_JDBC40, segue trecho de código exemplificando como ela simplifica as coisas:

 

public void Select(String caminho){
        try {
                 //Registrando o Driver JDBC do banco de dados...
                 String conexao = "com.hxtt.sql.dbf.DBFDriver";
                 //Carregando driver...
                 Class.forName(conexao).newInstance();
                 // String de conexao para o DBF
                 String arquivo = "nomeArquivo";
                 String url = "jdbc:DBF:/"+caminho;
                 //Faz um SELECT no arquivo
                 String sql = "SELECT * FROM "+arquivo;
                 //Não precisa colocar a extensão .dbf
                 //Abrindo uma conexão
                 Connection conn = DriverManager.getConnection(url);
                 // Statement...
                 Statement stmt = conn.createStatement();
                 //ResultSet
                 ResultSet rs = stmt.executeQuery(sql);
                 //Pegar o valor da(s) coluna(a) já no tipo desejado String, int, Date, etc...
                 while(rs.next()) {
                     model.setAtributo1(rs.getString("nomeColuna1"));
                     model.setAtributo2(rs.getInt("nomeColuna2"));
                     model.setAtributo3(rs.getDate("nomeColuna3"));
                     model.setNasc(data);
                 }
                 rs.close();
                 stmt.close();
                 conn.close();

        } catch (InstantiationException ex) {
            System.out.println(">>>"+ex.getMessage());
        } catch (IllegalAccessException ex) {
            System.out.println(">>>"+ex.getMessage());
        } catch (SQLException ex) {
            System.out.println(">>>"+ex.getMessage());
        } catch (ClassNotFoundException ex) {
            System.out.println(">>>"+ex.getMessage());
        }
   }

Segue a biblioteca, que não é a mais fácil de achar >>> DBF_JDBC40

O objetivo desta postagem foi fornecer uma ajuda para quem já sabe usar JDBC e se depara com as bases de dados .dbf,  lindas que não permitem qualquer coisa e que estão por aí ainda hoje, para nossa total satisfação e alegria.

 

Espero que isso ajude alguém como também me ajudou.
Até a próxima, pessoal
.

Written by David Ohio

Tem 10 anos de experiência no mercado de tecnologia da informação, prestando serviços para empresas nacionais e multinacionais.
Atualmente é CIO na Ohiotech, empresa especializada em desenvolvimento de soluções em tecnologia da informação.

4 Comentários

Comente :)
  1. Muito útil, porém quando realizei o select só retornou 1000 registros, sendo que na tabela tem muito mais. Alguma limitação da lib? ou alguma configuração adicional?

    • A biblioteca é trial

      http://www.hxtt.com/dbf/introduction.html

      Differences between the trial version and the licensed version:

      The trial version of the driver is available to use free for a 30-day trial period.
      The trial version of the driver allows executing not more than 50 queries once.
      SELECT queries return the first 1000 rows in the result set.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *