我正在尝试使用FoxPro OLEDB驱动程序通过ADO读取dbf文件。我可以查询,但有些特殊字符似乎没有通过。它们不是可打印的字符,因为单击时会消失,但是它们在OLEDB中与OLEDB一样绝对不一样。
例如,通过Visual FoxPro的以下字段:
当通过OLEDB访问它时,它显示如下:
我已将此缩小到第一个字符串包含ASCII码0(null)字符作为第10个字符的事实 - 这是有效的但是我不想删除它,但无论我尝试什么使用ADO阅读时,字符串在9个字符后结束。
答案 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没有破坏图片但被我阻止了,为什么会这样。