【问题标题】:C# : Connecting to dbf file using Microsoft.ACE.OLEDB.12.0C#:使用 Microsoft.ACE.OLEDB.12.0 连接到 dbf 文件
【发布时间】: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”不是本地对象,请检查您的网络 连接或联系服务器管理员。

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

有什么问题?

【问题讨论】:

    标签: c# oledb


    【解决方案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 数据库引擎无法 找到目标文件名。确保对象存在并且您 正确拼写它的名称和路径名。

    【讨论】:

      猜你喜欢
      • 2015-03-13
      • 2011-07-08
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多