如何使用C++ADO将GUID用作ADO查询参数

Howto use a GUID as an ADO query parameter using C++ ADO

本文关键字:ADO 查询 参数 用作 GUID 何使用 C++ADO      更新时间:2023-10-16

给定一个SQL Server数据库,该数据库使用uniqueidentifiers作为我要查询的表的主键字段,并且GUID结构(通过rpc.h包含)具有表中某个项的值,我如何创建一个存储该值的ADODB::参数?

我知道这些参数的值为_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 id=@id";
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");

请参阅此网页以供参考。

哦,这是C#代码,您可以使用StringFromIID()在C++中生成字符串。