如何使用GUID作为ADO查询参数使用C++ ADO
问题描述:
给定一个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? */));
答
传递一个字符串,用花括号格式化。如果您将guid值存储在System.Guid类型的变量中,则可以使用“B”格式说明符。像这样:
var arg = guid.ToString("B");
查看this web page仅供参考。
糟糕,那就是C#代码,您可以使用StringFromIID()在C++中生成字符串。
在引用的网页中找到了anser。谢谢。 – lowglider 2011-06-09 11:58:37
这不是正确的答案。代码在C++中。这里预期的参数类型是一个包含Guid信息的VARIANT。 – Nadzzz 2013-01-18 20:16:20