2011-06-08 135 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