错误C2664:'SQLGetData':无法将参数6从'SDWORD *'转换为'SQLLEN *'

时间:2012-12-17 22:03:34

标签: c++ visual-studio-2008 visual-c++ 64-bit

我有在32位模式下在Visual Studio 2008上编译的代码。现在我试图在64位模式下编译相同的内容。 我遇到此错误的地方是:

SDWORD temp=0;
SDWORD & readlen = (pValue?*pValue:temp); 
retValue=::SQLGetData(hStatement,mCurrentCol=column,cType,actualbuff,len,&readlen);

我试图谷歌错误消息,但没有找到我可以使用的解决方案。谁能帮我这个。 有什么方法可以将SDWORD类型化为SQLLEN吗?

1 个答案:

答案 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;