C#OLEDB驱动程序不读取空字符

时间:2018-03-27 23:27:47

标签: c# oledb visual-foxpro

我正在尝试使用FoxPro OLEDB驱动程序通过ADO读取dbf文件。我可以查询,但有些特殊字符似乎没有通过。它们不是可打印的字符,因为单击时会消失,但是它们在OLEDB中与OLEDB一样绝对不一样。

例如,通过Visual FoxPro的以下字段:

enter image description here

当通过OLEDB访问它时,它显示如下:

enter image description here

我已将此缩小到第一个字符串包含ASCII码0(null)字符作为第10个字符的事实 - 这是有效的但是我不想删除它,但无论我尝试什么使用ADO阅读时,字符串在9个字符后结束。

1 个答案:

答案 0 :(得分:0)

您没有向我们展示任何代码,图片链接已损坏,我们遗漏了猜测。我多年来一直在使用C#的VFPOLEDB驱动程序而且没有这个问题。我相信你试图描述C#端存在的问题而不是VFP端。在VFP中,即使char(0)也是有效字符。但是在C#中(文档误导IMO,说不是这种情况,但确实如此)字符串是ASCIIZ字符串,其中char(0)被接受为字符串的结尾。这应该是你的问题。您可以简单地将其读作字节数组,将字段转换为blob。类似的东西:

而不是像这样的纯SQL:

select myField from myTable

这样做并演员:

select cast(myField as w) as myField from myTable

编辑:我的ISP没有破坏图片但被我阻止了,为什么会这样。