C#:使用 Microsoft.ACE.OLEDB.12.0 连接到 dbf 文件
Posted
技术标签:
【中文标题】C#:使用 Microsoft.ACE.OLEDB.12.0 连接到 dbf 文件【英文标题】:C# : Connecting to dbf file using Microsoft.ACE.OLEDB.12.0 【发布时间】:2013-04-04 08:49:05 【问题描述】:我正在尝试使用 Microsoft.ACE.OLEDB.12.0 提供程序连接到 64 位操作系统中的 dbf 文件。
我写了
[Test]
public void CustomDbfReader()
string filepath = @"K:\data";
var dataTable = new DataTable();
string connectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=dBASE IV;Data Source='" + filepath +"'" ;
using (var oledbConnection = new OleDbConnection(connectionString))
oledbConnection.Open();
string stringCommadn = string.Format(@"select * from filename.dbf");
var oleDbCommand = new OleDbCommand(stringCommadn, oledbConnection);
var oleDbDataAdapter = new OleDbDataAdapter
SelectCommand = oleDbCommand
;
oleDbDataAdapter.Fill(dataTable);
Assert.IsNotEmpty(dataTable.Rows);
我得到了这个异常
System.Data.OleDb.OleDbException : Microsoft Access 数据库 引擎找不到对象“CardifOrigin.dbf”。确保 对象存在并且您正确拼写其名称和路径名称。 如果“CardifOrigin.dbf”不是本地对象,请检查您的网络 连接或联系服务器管理员。
我确定路径和文件名都存在。
有什么问题?
【问题讨论】:
【参考方案1】:名称的 dbase 规则强制最大为 10 characters
。在 Approach 中,有关较长名称的信息存储在 Microsoft 不知道的特殊索引中。
12 个字符的一个是不起作用的。如果将其重命名为 8 个字符,则可以正常工作。
The Microsoft Jet database engine could not find the object filename
在 Microsoft Access 中,当您导入 dBase、FoxPro 或 Paradox 文件时 不遵循 MS-DOS 8.3 文件名格式(即其 句号前的名称超过八个字符,或者缺少 句号后的三个字符扩展名),您可能会收到 以下错误信息:
Microsoft Jet 数据库引擎无法 找到目标文件名。确保对象存在并且您 正确拼写它的名称和路径名。
【讨论】:
以上是关于C#:使用 Microsoft.ACE.OLEDB.12.0 连接到 dbf 文件的主要内容,如果未能解决你的问题,请参考以下文章
System.Exception:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册 [重复]
错误:“Microsoft.Ace.OLEDB.12.0”提供程序未在本地计算机上注册 [重复]
win10:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
Microsoft.Jet.OLEDB.4.0 与 Microsoft.ACE.OLEDB.12.0,我应该使用哪个?