前言

  最新项目需要经常和dbf文件打交道,在实际场景中很多软件需要和一些老的系统进行数据交互,而这些系统都在使用foxpro数据库,读取dbf文件一般都是分为两种情况:第一;安装foxpro的驱动进行读取,第二;不安装驱动,使用ODBC进行读取。

  具体如何设置DBF / FoxPro连接字符串,可以参考一下这篇文章(https://www.connectionstrings.com/dbf-foxpro/

方案一:安装foxpro驱动

  可以到微软官网(https://www.microsoft.com/en-us/download/details.aspx?id=14839)下载文件“VFPOLEDBSetup.msi”进行安装。再使用代码读取,如下所示:

             string filePath = @"C:\Temp\test.dbf";    //文件路径,如:C:\Temp\test.dbf
FileInfo fileInfo = new FileInfo(filePath);
string directoryName = fileInfo.DirectoryName;  //文件夹目录
string fileName = fileInfo.Name; OleDbConnection conn = new OleDbConnection();
string connStr = @"Provider=VFPOLEDB.1;Data Source=" + directoryName + ";Collating Sequence=MACHINE";
conn.ConnectionString = connStr;
conn.Open(); string strSql = @"SELECT * FROM " + fileName;
OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
DataTable dt = new DataTable();
da.Fill(dt);

方案二:不安装驱动,使用ODBC读取

         private void button1_Click(object sender, EventArgs e)
{
try
{
string directoryPath = @"C:\Temp";//存放的dbf文件夹目录。
string fileName = @"test.dbf";//dbf的文件名,这里比如是test.dbf 因为这里做为表名,所以后缀.dbf可以省略,直接是test也可以的。
string strConn = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + directoryPath; System.Data.Odbc.OdbcConnection odbcConn = new System.Data.Odbc.OdbcConnection();
odbcConn.ConnectionString = strConn;
odbcConn.Open(); string strSql = @"SELECT * FROM " + fileName; OdbcDataAdapter oda = new OdbcDataAdapter(strSql, odbcConn);
DataTable dt = new DataTable();
oda.Fill(dt); dataGridView1.DataSource = dt;
odbcConn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

ODBC读取异常问题

  实际过程当中,我们经常会碰到一个问题即:提示Microsoft Jet 数据库引擎找不到对象的问题。

  但是!检测了N遍,名称和路径都是没有错的,网上也查了很多相关资料,但是都没有得到解决(问题是一样,但是解决方案无效)。经过反复测试,终于发现问题的所在:dbf文件名不能超过8个字符,一旦超过8个字符,就会报这样的错。(为什么会这样不得而知~%>_<%)

  解决方法:将dbf文件名控制在8个字符以内,暂时找不到更好的办法

PS:如有疑问,请留言,未经允许,不得私自转载,转载请注明出处:http://www.cnblogs.com/xuliangxing/p/7690709.html

  

  

C# 解决读取dbf文件,提示Microsoft Jet 数据库引擎找不到对象的问题的更多相关文章

  1. Microsoft Jet 数据库引擎找不到对象'Sheet1$_'。请确定对象是否存在,并正确地写出它的名称和路径

    We have a CRM add-on for Importing Price Lists into CRM. For this tool, we expect the details to be ...

  2. C# - Excel - Microsoft Access 数据库引擎找不到对象

    我几乎要无语了,疯掉了,以为是office本身的问题,换了好多次office2007,安装又不顺利,换到了office2010,想想大部分应该兼容2007,所以用着office2010了. 甚至差点要 ...

  3. Microsoft Jet 数据库引擎打不开文件,它已经被别的用户以独占方式打开,或没有查看数据的权限。

    System.Data.OleDb.OleDbException (0x80004005): Microsoft Jet 数据库引擎打不开文件'D:\wwwroot\gonghouxie\wwwroo ...

  4. Microsoft Jet 数据库引擎 SQL 和 ANSI SQL 的比较

    http://westlife063.blog.163.com/blog/static/129942096201052591210384/   Microsoft Jet 数据库引擎 SQL 和 AN ...

  5. Err.number错误号和可捕获的 Microsoft access 数据库引擎和 DAO错误说明

    错误码        信息2420        数字语法错误2421        日期语法错误2422        字符串语法错误2423        ‘.’.‘!’.或 ‘()’的使用无效2 ...

  6. 读取DBF文件的部分代码

    private void BtnOpenInitial_Click(object sender, EventArgs e) { OpenFileDialog file = new OpenFileDi ...

  7. python3 读取dbf文件报错 UnicodeDecodeError: 'gbk' codec can't decode

    在读取dbf文件时由于编码问题报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xb5 in position 49: incomplete ...

  8. Android开发系列(十七):读取assets文件夹下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...

  9. C#读取excel文件提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    错误描述: 在VS2010执行读取excel文件时,报错"未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序" 业务代码: //下 ...

随机推荐

  1. Drawing line on a click on ZedGraph Pane

    https://stackoverflow.com/questions/12422398/drawing-line-on-a-click-on-zedgraph-pane public Form1() ...

  2. python测试开发django-44.xadmin自定义菜单项

    前言 xadmin后台的菜单项是放到一个app下的,并且里面的排序是按字母a-z排序,有时候我们需要划分多个项,需要自定义菜单列表,可以通过重写CommAdminView类实现. xadmin后台提供 ...

  3. Linux C Socket TCP编程介绍及实例

    转自:https://blog.csdn.net/lell3538/article/details/53335231 { printf("向服务器发送数据:%s\n",sendbu ...

  4. CSS网页布局垂直居中整理

    一.使用CSS3处理垂直居中方式 1.使用Flex布局处理(推荐),简单好用 body,html{ width:100%; height:100%; } .out { width: 20%; heig ...

  5. ASP.NET Core入门系列教程

    微软把这个新的框架叫:Razor Pages,以下文中我们将频繁提及—Razor Pages. 项目目录结构 wwwroot静态资源文件夹首先,Razor Pages项目中多了一个wwwroot的文件 ...

  6. vmware中如何检查cpu的使用状况-一个考题引发的思考

    来自一个VCP的考题,有点兴趣.可参看: 如何在VMware里使用esxtop? http://thocm.com/a/caozuoxitongzixun/xunihuazonghezixun/VMw ...

  7. C# Chart使用总结 2 ---------chart悬停选定数值操作

    1.用鼠标悬停事件处理 private void Form1_Load(object sender, EventArgs e) { //connStr = connPath1 + conn2; fil ...

  8. Load 和 DOMContentLoaded 区别

    Load 事件触发代表页面中的 DOM,CSS,JS,图片已经全部加载完毕. DOMContentLoaded 事件触发代表初始的 HTML 被完全加载和解析,不需要等待 CSS,JS,图片加载.

  9. python hex() oct() bin() math 内置函数

    示例: print hex(20),hex(-20) #转换成十六进制 print oct(20),oct(-20) #转换成八进制 print bin(20),bin(-20) #转换成二进制 pr ...

  10. php write_ini_file

    php读ini文件有很方便的pares_ini_file,但是写回去却没有,这里写一个: function write_ini_file($assoc_arr, $path, $has_section ...