c#:使用Microsoft.ACE.OLEDB.12.0连接dbf文件

本文关键字:0连接 dbf 文件 OLEDB ACE 使用 Microsoft | 更新日期: 2023-09-27 18:07:17

我正在尝试使用Microsoft.ACE.OLEDB.12.0 provider连接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。oledbeexception: Microsoft Access数据库引擎找不到对象' cardiforeign .dbf'。确保对象存在,并且正确拼写其名称和路径名。如果CardifOrigin。Dbf '不是本地对象,请检查您的网络连接或联系服务器管理员。

我确定路径和文件名都存在。

有什么问题吗?

c#:使用Microsoft.ACE.OLEDB.12.0连接dbf文件

数据库规则强制名称的最大值为10 characters。在Approach中,关于较长的名字的信息存储在一个微软不知道的特殊索引中。

12个字符的1是不能工作的。如果您将其重命名为8个字符,那么它就可以正常工作。

Microsoft Jet数据库引擎找不到对象filename

在Microsoft Access中,当您导入dBase、FoxPro或Paradox文件时不遵循MS-DOS 8.3文件名格式(即,它的句点前的名称超过8个字符,或者缺少三个字符的扩展后的句号),您可能会收到下面的错误信息:

Microsoft Jet数据库引擎不能查找对象文件名。确保对象存在,并且你正确拼写其名称和路径名称