2

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

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

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

4

1 回答 1

4

第六个参数的实际类型是 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;
于 2012-12-18T14:20:05.427 回答