OleDbException: 记录已删除。在任何记录中都找不到搜索关键字

OleDbException: Record is deleted. The search key was not found in any record

我正在尝试通过 C# 方法使用一个 table 导入 DBF 文件。 该代码对大多数文件都可以正常工作,但其中一个文件似乎已损坏。 我不确定是代码页差异导致它损坏还是其他原因,如果有人有任何见解请帮助!

 public static void LoadDbf(DataTable destinationDataTable, string DbfDbPath, string DbfDbName)
    {
        destinationDataTable.Clear();
        using (var CS = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DbfDbPath + ";Extended Properties=dBASE III;"))
        {
            try
            {
                string selectTableSyntax = @"SELECT * FROM " + DbfDbName;
                OleDbDataAdapter adapter = new OleDbDataAdapter(selectTableSyntax, CS);
                adapter.Fill(destinationDataTable);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Pogreška prilikom učitavanja baze " + DbfDbName + ".\r\n\r\n" + ex.ToString());
            }
            finally
            {
                CS.Close();
            }
        }
    }

在这篇文章的帮助下修复了它:

http://www.codeproject.com/Articles/24247/Load-a-DBF-into-a-DataTable

基本上是通过BinaryReader加载数据,然后存入DataTable

非常优雅的代码,有一个 class 和一个方法

dataTable = ParseDBF.ReadDBF(完整路径);