【问题标题】:Howto use a GUID as an ADO query parameter using C++ ADO如何使用 C++ ADO 将 GUID 用作 ADO 查询参数
【发布时间】:2011-09-10 23:51:00
【问题描述】:

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

我知道参数将它们的值作为_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? */));

【问题讨论】:

    标签: c++ ado guid uniqueidentifier variant


    【解决方案1】:

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

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

    参考this web page

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

    【讨论】:

    • 在引用的网页中找到了分析器。谢谢。
    • 这不是正确的答案。代码是c++。此处预期的参数类型是包含 Guid 信息的 VARIANT。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    相关资源
    最近更新 更多