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(完整路径);
我正在尝试通过 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(完整路径);