in ,

JAVA – Conexao odbc direta para arquivos .dbf

Publicidade
Publicidade


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

Mais de 10 anos de experiência no mercado de tecnologia da informação, entusiasta de tecnologia, pesquisador em inteligência artificial, desenvolvedor, e pai de filhotões caninos.

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

      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 *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

O quanto você é dependente da sua vaquinha?

Marissa Mayer grávida e CEO do Yahoo