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,我应该使用哪个?

“Microsoft.ACE.OLEDB.12.0”尚未注册

如何使用 Office 64 位安装 Microsoft.Ace.oledb 32 位?