ODBC:SQLDescribeCol始终返回columnNameLength为0

时间:2016-08-17 14:12:19

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

出于某种原因,ODBC SQLDescribeCol()总是返回columnNameLength的{​​{1}},这会破坏代码的逻辑。

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

知道为什么它总是返回0的{​​{1}}?

code is here

debugging

2 个答案:

答案 0 :(得分:1)

两件事:

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

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

答案 1 :(得分:0)

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

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

fix