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 '不是本地对象,请检查您的网络连接或联系服务器管理员。
我确定路径和文件名都存在。
有什么问题吗?
数据库规则强制名称的最大值为10 characters
。在Approach中,关于较长的名字的信息存储在一个微软不知道的特殊索引中。
12个字符的1是不能工作的。如果您将其重命名为8个字符,那么它就可以正常工作。
Microsoft Jet数据库引擎找不到对象filename
在Microsoft Access中,当您导入dBase、FoxPro或Paradox文件时不遵循MS-DOS 8.3文件名格式(即,它的句点前的名称超过8个字符,或者缺少三个字符的扩展后的句号),您可能会收到下面的错误信息:
Microsoft Jet数据库引擎不能查找对象文件名。确保对象存在,并且你正确拼写其名称和路径名称