【问题标题】:C# OLEDB driver not reading null characterC# OLEDB 驱动程序不读取空字符
【发布时间】:2018-09-06 12:18:03
【问题描述】:

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

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

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

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

【问题讨论】:

  • NUL 也是许多事物(如 NET)的字符串指示符的结尾。也许如果你把它当作一个字节数组你可以检索它
  • 如果您遍历 String 对象中的字符,您实际上可能会发现那些额外的字符仍然存在,但默认情况下根本不显示,原因 @Plutonix 提到。
  • @jmcilhinney 我试过循环,额外的字符肯定不存在
  • @Plutonix 你知道我将如何使用 oledb 驱动程序检索字节数组吗?

标签: c# oledb visual-foxpro


【解决方案1】:

您没有向我们展示任何代码,并且图像链接已损坏,我们无法猜测。多年来我一直在使用 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 阻止了我,请弄清楚原因。

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2014-10-26
    相关资源
    最近更新 更多