.NET
- Acessando arquivos DBF com C# e VB .NET
![]() |
Ora, ora e aqui estamos novamente voltando a falar sobre acesso a arquivos DBF. |
![]() Um dos maiores legados do dBase é seu formato de arquivo .dbf, que foi amplamente adotado. O famoso padrão Xbase. O termo XBase é frequentemente utilizado para esse grupo de aplicações. O sistema de banco de dados dBase foi um dos primeiros a prover uma seção de cabeçalho (header) para descrever a estrutura dos dados dentro do arquivo. Isso significa que o programa não mais necessitava conhecimento avançado da estrutura de dados, mas poderia perguntar diretamente ao arquivo de dados como este estava estruturado. |
Mas afinal existe alguém na face da terra que ainda usa arquivos DBF ?
Existe e não são poucos.
A resposta pode ser surpreendente e os motivos também mas vamos deixar essa discussão de lado e passar para a parte prática.
Nota: Uma vez visitei um cliente que possui todos os dados do seu negócio em arquivos .dbf (algo em torno de 150.000 registros)
Um belo dia , em pleno século XXI, por um capricho da profissão, você precisa tratar com arquivos DBF.
E agora , por onde começar ???
Bem , você poderia usar o DBase, FoxPro , um utilitário de terceiros, etc., etc.
Para acessar arquivos DBF usando Visual Basic 6 ou ASP veja os meus artigos : |
Mas você precisa fazer isso usando C# ou VB .NET e ponto final.
Bem , se o problema era esse , ele
esta resolvido...
Vou mostrar como acessar um arquivo DBF (padrão XBase) usando C# e VB .NET.
1- Acessando arquivos DBF com C#
Podemos usar o Visual C# Express Edition ou o SharpDevelop fica a seu critério pois o código usado é o mesmo.
Eu vou usar o SharpDevelop 2.2 para acessar o arquivo padrão DBF chamado arqDBF.dbf que esta na pasta c:\dados;
O arquivo Dbase arqDBF foi criado usando o utilitário VisData do Visual Basic 6 e tem a seguinte estrutura:
Abra o SharpDevelop e no menu Arquivo selecione : Novo -> Solução;
A seguir selecione C# -> Aplicações Windows e em Modelos selecione Aplicações Windows informando o nome do projeto como LeDBF;
No formulário padrão inclua um componente DataGridView e um botão de comando (name=btnLeDBF) conforme a figura abaixo:
Declare os seguintes namespaces no formulário:
Using
System.Data.Odbc;
using System.Data;
Inclua o código abaixo no evento Click do botão de comando :
void BtnLeDBFClick(object sender, EventArgs e) { OdbcConnection oConn = new OdbcConnection(); oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=c:\dados\;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;"; oConn.Open(); OdbcCommand oCmd = oConn.CreateCommand(); oCmd.CommandText = @"SELECT * FROM c:\dados\arqDBF.dbf" ; DataTable dt = new DataTable(); dt.Load(oCmd.ExecuteReader()); oConn.Close(); dataGridView1.DataSource = dt; } |
Acesso a um arquivo DBF usando o provedor ODBC.
Execute o projeto teremos os dados exibidos no datagridview:
Eu acessei o arquivo DBF usando o provedor ODBC mas poderiamos ter usando o provedor OleDb, neste caso o código da ficaria da seguinte forma:
Após definir os namespaces :
using
System.Data.OleDb;
using System.Data;
no formulário, defina o código no botão conforme abaixo:
void BtnDBFOleDbClick(object sender, EventArgs e) { OleDbConnection oConn = new OleDbConnection(); oConn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dados;Extended Properties=dBASE IV;"; oConn.Open(); OleDbCommand oCmd = oConn.CreateCommand(); oCmd.CommandText = @"SELECT * FROM c:\dados\arqDBF.dbf" ; DataTable dt = new DataTable(); dt.Load(oCmd.ExecuteReader()); oConn.Close(); dataGridView1.DataSource = dt; } |
Acesso a arquivo DBF usando o provedor OleDb |
2- Acessando arquivos DBF com VB .NET
Para acessar o mesmo arquivo usando o VB .NET eu vou usar o Visual Basic 2008 Express Edition;
Abra o VB 2008 Express e crie um novo projeto do tipo Windows Application com o nome trataDBF:
No formulário padrão inclua um componente DataGridView e um Button conforme a figura abaixo:
Declare os seguintes namespaces no formulário:
Imports System.Data.Odbc
Imports System.Data
No evento Click do botão inclua o código abaixo:
Private Sub btnDBF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDBF.Click Dim oConn As New OdbcConnection() oConn.ConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=c:\dados\;Exclusive=No; _ Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;" oConn.Open() Dim oCmd As OdbcCommand = oConn.CreateCommand() oCmd.CommandText = "SELECT * FROM c:\dados\arqDBF.dbf" Dim dt As New DataTable() dt.Load(oCmd.ExecuteReader()) oConn.Close() DataGridView1.DataSource = dt End Sub |
Executando o projeto iremos obter como resultado os dados exibidos no DataGridView;
Podemos obter o mesmo resultado usando provedor OleDb , neste caso usamos o provedor OleDb:
Imports System.Data.OleDb
Imports System.Data
Substitua o código do evento Click do botão de comando pelo código abaixo:
Dim oConn As New OleDbConnection() oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dados;Extended Properties=dBASE IV;" oConn.Open() Dim oCmd As OleDbCommand = oConn.CreateCommand() oCmd.CommandText = "SELECT * FROM c:\dados\arqDBF.dbf" Dim dt As New DataTable() dt.Load(oCmd.ExecuteReader()) oConn.Close() dataGridView1.DataSource = dt |
Pegue os projeto completos aqui:
Aguarde mais artigos sobre C# e VB .NET.
Eu sei é apenas .NET mas eu gosto...
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET