2011-06-08 67 views
1

给定一个SQL Server数据库,它使用唯一标识符作为要查询的表的主键字段,以及一个GUID结构(通过rpc.h包含),其值为表中的条目之一,如何创建一个存储该值的ADODB :: Parameter?如何使用GUID作为ADO查询参数使用C++ ADO

我知道这些参数的值是_variant_t。我如何从GUID获得_variant_t?强制转换会产生错误,并且_variant_t类型不会在构造函数中使用GUID。

我通过以下方式创建命令和参数对象:

HRESULT hr; 
_CommandPtr selectCmd; 
hr = selectCmd.CreateInstance(__uuidof(ADODB::Command)); 
if (FAILED(hr)) 
    throw _com_error(hr); 

selectCmd->CommandText = L"SELECT .... WHERE [email protected]"; 
selectCmd->Parameters->Append(selectCmd->CreateParameter(L"@id",DataTypeEnum::adGUID, ParameterDirectionEnum::adParamInput, 16, /* what to put here? */)); 

回答

4

传递一个字符串,用花括号格式化。如果您将guid值存储在System.Guid类型的变量中,则可以使用“B”格式说明符。像这样:

var arg = guid.ToString("B"); 

查看this web page仅供参考。

糟糕,那就是C#代码,您可以使用StringFromIID()在C++中生成字符串。

+0

在引用的网页中找到了anser。谢谢。 – lowglider 2011-06-09 11:58:37

+0

这不是正确的答案。代码在C++中。这里预期的参数类型是一个包含Guid信息的VARIANT。 – Nadzzz 2013-01-18 20:16:20