一、制作一个测试用的DBF文档
下载并安装工具 Microsoft Visual FoxPro
1.输入 create 命令创建一个表 test.dbf,并设置字段
2.如果对设置后的字段不满意,输入 modify structure 命令修改字段
3.输入 browse last 命令可以打开一个表,并在表中添加数据

二、制作一个可以读取这个DBF文档的C#程序
将表 test.dbf 放到C#程序的 Debug 目录下

程序代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DbfReader
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void btnWriteToXml_Click(object sender, EventArgs e)
{
try
{
System.Data.Odbc.OdbcConnection ocConn =
new System.Data.Odbc.OdbcConnection();
string strTableName = @"TEST.DBF";
string strConn =
@" Driver={Microsoft dBASE Driver (*.dbf)}; SourceType=DBF; " +
@" Data Source=" + strTableName + "; Exclusive=No; NULL=NO; " +
@" Collate=Machine; BACKGROUNDFETCH=NO; DELETE=NO";
ocConn.ConnectionString = strConn;
ocConn.Open();
string strSql = txtSql.Text;
//需要 using System.Data.Odbc;
OdbcDataAdapter oda = new OdbcDataAdapter(strSql, ocConn);
DataTable dt = new DataTable();
oda.Fill(dt);
dgvData.DataSource = dt;
ocConn.Close();
MessageBox.Show("读取完毕,查询结果共计: " + dt.Rows.Count + " 条");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
END
附:后来换了个新的 Win7 64位 的电脑,这个程序就没法正确运行了。截图如下:

后来查了下ODBC配置界面(在开始菜单输入ODBC就可以进入),这台电脑里只有
Excel Files: Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
MS Access Database: Microsoft Access Driver (*.mdb, *.accdb)
两项,而我的电脑中还有
dBASE Files: Microsoft dBase Driver (*.dbf)

后来我在新的电脑上安装了一个 Microsoft Visual FoxPro 6.0,ODBC数据源管理器中会有
Visual FoxPro Database: Microsoft Visual FoxPro
Visual FoxPro Tables: Microsoft Visual FoxPro
两项,这样将连接字符串修改为
Driver={Microsoft Visual FoxPro Driver}; SourceType=DBF; sourcedb=D:\DbfReader\DbfReader\bin\Debug\jyrq.dbf; BACKGROUNDFETCH=NO; DELETE=NO
就又可以正常访问DBF文件了
END
本文介绍如何使用C#程序读取DBF文件。首先通过Microsoft Visual FoxPro创建DBF文件,然后利用OdbcDataAdapter组件实现数据读取。文章还讨论了解决不同操作系统间兼容性问题的方法。
716

被折叠的 条评论
为什么被折叠?



