ODBC:SQLDescribeCol 总是 return columnNameLength 为 0

ODBC: SQLDescribeCol always return columnNameLength of 0

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

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

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

code is here.

两件事:

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

话虽这么说,但我认为如果您将函数改进为 return 一个字符串对象,情况会好得多。更少的(指针)参数、有意义的 return 值和异常错误处理。不过只是一个建议。

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

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