【发布时间】:2013-03-26 15:01:49
【问题描述】:
我正在以这种方式使用 OleDb 读取 DBF 文件:
[TestMethod]
public void TestMethod2()
{
const string path = @"D:\VL816183.DBF";
var connection = new OleDbConnection(string.Format("Provider=Microsoft.Jet.Oledb.4.0;Data Source={0};Extended Properties=\"dBase IV\"", Path.GetDirectoryName(path)));
connection.Open();
var command = new OleDbCommand(string.Format("select MNO from {0}", Path.GetFileName(path)), connection);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var str = (string)reader["MNO"];
}
}
connection.Close();
}
一切似乎都很好,但字符串数据有问题。源数据库包含用 CodePage=852 保存的字符串,我找不到正确读取它的方法。
我尝试将 CharSet/CodePage/CharacterSet 设置为连接字符串的扩展属性,但没有任何运气(事实上,抛出了异常:找不到可安装的 ISAM)。
我也尝试使用 'vfpoledb' 提供程序读取它,但仍然没有运气。
例如,有字符串“FRANTIŠEK”,但 str 变量包含“FRANTIµEK”。
有人知道怎么做吗? 谢谢
【问题讨论】:
-
你可以通过
Field Index而不是使用阅读器的字段名称来完成 -
@DJKRAZE 当然可以,但结果保持不变
标签: c# encoding ado.net oledb dbase