【问题标题】:ODBC: SQLDescribeCol always return columnNameLength of 0ODBC:SQLDescribeCol 始终返回 0 的 columnNameLength
【发布时间】:2016-08-17 14:12:19
【问题描述】:

由于某种原因,ODBC SQLDescribeCol() 总是返回 columnNameLength of 0,这搞砸了代码的逻辑。

在 Windows Server 2012 和 SQLServer 2014 Developer 中运行。

知道为什么它总是返回 columnNameLength0 吗?

code is here

【问题讨论】:

    标签: sql-server odbc sql-server-2014 windows-server-2012


    【解决方案1】:

    两件事:

    • ODBC 可能没有问题,但您使用的 ODBC 驱动程序有问题。可能是错误或“可选”的“功能”之一。
    • 即使驱动程序返回 0 作为长度,columnName 仍然包含一个以 null 结尾的字符串。不太了解 C#,但我敢打赌,有一种方法可以从中创建字符串对象。或者您可以尝试自己查找空终止字符。在任何情况下,由于您的外部 buffer 需要足够大以容纳最大的受支持列名称,因此复制整个 columnName 缓冲区应该没问题。

    话虽如此,我认为如果你改进你的函数只返回一个字符串对象,你会好很多。更少(指针)参数,有意义的返回值,以及带有异常的错误处理。不过,这只是一个建议。

    【讨论】:

    • 感谢 Michael,这原来是 x64 构建和进入 SQQLDescribeCol 的参数大小的问题
    【解决方案2】:

    这原来是 x64 构建的问题,其中参数的大小编码不正确(应该是 SQLULEN 而不是 SQLUINTEGER)

    https://github.com/szekerest/mapserver/commit/6eb767fcaecd03960940343f9acef2ce296caf70

    【讨论】:

      猜你喜欢
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多