我在这里挣扎。我正在尝试从DBF文件获取数据。为此使用以下连接字符串和代码。
DataTable YourResultSet = new DataTable();
const string path = "D:\Sample\Database\client.dbf";
string conStr = String.Format("Provider = Microsoft.Jet.Oledb.4.0; Data Source = {0}; Extended Properties = "dBase IV"", Path.GetDirectoryName(path));
var connection = new OleDbConnection(conStr);
connection.Open();
var command = new OleDbCommand(string.Format("select id from {0}", Path.GetFileName(path)), connection);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var str = (string)reader["id"];
}
}
connection.Close();
可以读取几个DBF文件,并且大多数DBF文件无法获取。虽然执行代码ANN错误已经发生"外部表不在期望格式。"
即使我使用的是不同的connextion字符串,例如vfopledB,vfoledb1,jet,ace等。
我的机器为64位,我正在使用VS2013。请帮助我。
不要放负,因为我尝试过所有关于同一问题的流程答案。
使用vfpoledb驱动程序。喷气机或ACE驱动程序将无法识别所有DBF表。VFPOLEDB驱动程序为32位,这意味着您应该在C#Project(属性/构建目标平台)中定位X86。
void Main()
{
DataTable YourResultSet = new DataTable();
string path = @"D:SampleDatabaseclient.dbf";
using (OleDbConnection connection =
new OleDbConnection("Provider=VFPOLEDB;Data Source=" + Path.GetDirectoryName(path)))
using (OleDbCommand command = new OleDbCommand(
string.Format("select id from {0}", Path.GetFileNameWithoutExtension(path)), connection))
{
connection.Open();
YourResultSet.Load(command.ExecuteReader());
connection.Close();
}
Form f = new Form();
DataGridView dgv = new DataGridView { Dock = DockStyle.Fill, DataSource=YourResultSet};
f.Controls.Add(dgv);
f.Show();
}