JAVA – Conexao odbc direta para arquivos .dbf


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.