我有在32位模式下在Visual Studio 2008上编译的代码。现在我试图在64位模式下编译相同的内容。 我遇到此错误的地方是:
SDWORD temp=0;
SDWORD & readlen = (pValue?*pValue:temp);
retValue=::SQLGetData(hStatement,mCurrentCol=column,cType,actualbuff,len,&readlen);
我试图谷歌错误消息,但没有找到我可以使用的解决方案。谁能帮我这个。 有什么方法可以将SDWORD类型化为SQLLEN吗?
答案 0 :(得分:3)
第六个参数的实际类型是SQLGetData是SQLLEN *。 MS'文档也使用SQLINTEGER *。您的代码将其视为SDWORD *。这是一个简单的强制转换 IF SQLLEN和SDWORD具有相同的基础数据类型。但是,如果SQLLEN是一个64位宽的值,SDWORD是32位宽,那么演员阵容是不够的。在这种情况下,您可以尝试:
SQLLEN length=0;
retValue=::SQLGetData(hStatement,mCurrentCol=column,cType,actualbuff,len,&length);
if (pValue)
*pValue = length;