C# 解决读取dbf文件,提示Microsoft Jet 数据库引擎找不到对象的问题
前言
最新项目需要经常和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 数据库引擎找不到对象的问题的更多相关文章
- Microsoft Jet 数据库引擎找不到对象'Sheet1$_'。请确定对象是否存在,并正确地写出它的名称和路径
		
We have a CRM add-on for Importing Price Lists into CRM. For this tool, we expect the details to be ...
 - C# - Excel - Microsoft Access 数据库引擎找不到对象
		
我几乎要无语了,疯掉了,以为是office本身的问题,换了好多次office2007,安装又不顺利,换到了office2010,想想大部分应该兼容2007,所以用着office2010了. 甚至差点要 ...
 - Microsoft Jet 数据库引擎打不开文件,它已经被别的用户以独占方式打开,或没有查看数据的权限。
		
System.Data.OleDb.OleDbException (0x80004005): Microsoft Jet 数据库引擎打不开文件'D:\wwwroot\gonghouxie\wwwroo ...
 - Microsoft Jet 数据库引擎 SQL 和 ANSI SQL 的比较
		
http://westlife063.blog.163.com/blog/static/129942096201052591210384/ Microsoft Jet 数据库引擎 SQL 和 AN ...
 - Err.number错误号和可捕获的 Microsoft access 数据库引擎和 DAO错误说明
		
错误码 信息2420 数字语法错误2421 日期语法错误2422 字符串语法错误2423 ‘.’.‘!’.或 ‘()’的使用无效2 ...
 - 读取DBF文件的部分代码
		
private void BtnOpenInitial_Click(object sender, EventArgs e) { OpenFileDialog file = new OpenFileDi ...
 - python3 读取dbf文件报错 UnicodeDecodeError: 'gbk' codec can't decode
		
在读取dbf文件时由于编码问题报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xb5 in position 49: incomplete ...
 - Android开发系列(十七):读取assets文件夹下的数据库文件
		
在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...
 - C#读取excel文件提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
		
错误描述: 在VS2010执行读取excel文件时,报错"未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序" 业务代码: //下 ...
 
随机推荐
- 在AngularJS中实现一个延迟加载的Directive
			
所谓的延迟加载通常是:直到用户交互时才加载.如何实现延迟加载呢? 需要搞清楚三个方面: 1.html元素的哪个属性需要延迟加载?2.需要对数据源的哪个字段进行延迟加载?3.通过什么事件来触发延迟加载? ...
 - android:碎片的概念
			
碎片(Fragment)是一种可以嵌入在活动当中的 UI 片段,它能让程序更加合理和充分 地利用大屏幕的空间,因而在平板上应用的非常广泛.虽然碎片对你来说应该是个全新的概 念,但我相信你学习起来应该毫 ...
 - (素材源代码)猫猫学IOS(四)UI之半小时搞定Tom猫
			
下载地址:http://download.csdn.net/detail/u013357243/8514915 以下是执行图片展示 制作思路以及代码解析 猫猫学IOS(四)UI之半小时搞定Tom猫这里 ...
 - Toast信息提示:下拉收起(基于jQuery)(app信息提示更新)
			
直接上效果:
 - (转)热空气扭曲效果shader
			
转自:http://blog.sina.com.cn/s/blog_89d90b7c0102vaqy.html 热空气扭曲在大自然中形成是比较复杂的,这里只是通过取屏幕纹理和移动UV来模拟热扭曲效果. ...
 - Fix Corrupt Blocks on HDFS
			
来自:http://centoshowtos.org/hadoop/fix-corrupt-blocks-on-hdfs/ How do I know if my hadoop hdfs filesy ...
 - 70个注意的Python小Notes
			
Python读书笔记:70个注意的小Notes 作者:白宁超 2018年7月9日10:58:18 摘要:在阅读python相关书籍中,对其进行简单的笔记纪要.旨在注意一些细节问题,在今后项目中灵活运用 ...
 - Python实现邮件的批量发送
			
Python实现邮件的批量发送 1 发送文本信息 '''加密发送文本邮件''' def sendEmail(from_addr,password,to_addr,smtp_server): try: ...
 - 关于select标签曾经踩过的几个坑!
			
1.情景展示 select标签,是前端开发界面展示,经常需要用到一个标签,看看下面的坑,你中招了吗? 2.坑区展示 踩坑一:option标签没有声明value属性: 没有声明value属性 < ...
 - 有关volatile关键字和transient关键字
			
(1)volatile关键字['vɑlətl]的作用 让变量每次在使用的时候,都从主存中取,而不是从各个线程的“工作内存”. 也就是说,volatile变量对于每次使用,线程都能得到当前volatil ...