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"提供程序" 业务代码: //下 ...
随机推荐
- dwz Esc关闭dialog 窗口
document.onkeydown = function(e){ // alert(1) var keycode = ""; if(navigator.appName == &q ...
- iOS: lame框架将PCM录音转成MP3格式
lame框架将PCM录音转成MP3格式 1.lame下载地址:https://github.com/rbrito/lame,它是一个不可执行的文件,需要借助build-lame.sh脚本将其编译成.a ...
- iOS开发-NSDate获取当前时区时间
NSDate Date默认显示的是格林尼治所在地的标准时间(GMT),转换为中国时区需要加上八个小时,针对与这个情况你可以直接在获取时间之后加上八个小时,也可以转换到当前时区,都很简单,代码参考如下: ...
- JVM内存区域的划分(内存结构或者内存模型)
JVM内存区域的划分(内存结构或者内存模型) 运行时数据区域: 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 程序计数器(线程私有): 是当前线程所 ...
- python emoji 表情过滤
http://my.oschina.net/jiemachina/blog/189460 注意替换的这些emoji是标准的表情字符,每个表情本来是2个字节,替换成字符串后,每个表情就变成12个字符了, ...
- ASP.NET CORE 之 在IIS上部署MVC项目
与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel ...
- fiddler抓包参数乱码的解决方法
解决方法: 1.win+R 2.打开注册表编辑器:输入regedit +回车+是 3.HKEY_CURRENT_USER\Software\Microsoft\Fiddler2 4.右键新建,选字符串 ...
- tmux入门
按键 man tmux和C+b?两个操作可以获得一切. C-b ? 显示快捷键帮助 C-b C-o 调换窗口位置,类似与vim 里的C-w C-b 空格键 采用下一个内置布局 C-b ! 把当前窗口变 ...
- Clipboard Action for Mac(智能剪贴板历史管理器)破解版安装
1.软件简介 Clipboard Action 是 macOS 系统上一款智能剪贴板历史管理器,它允许剪贴板历史中的每一段内容执行操作.使用 AppleScript 或 Automator 工作 ...
- Spring Boot优化
针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点: 线程数 超时时间 jvm优化 首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接 ...