2011-06-08 12 views
1

Étant donné une base de données SQL Server qui utilise des identificateurs uniques comme champs de clé primaire pour la table que je souhaite interroger et une structure GUID (incluse via rpc.h) qui a la valeur une des entrées dans le tableau, comment créer un ADODB :: Parameter qui stocke cette valeur? Je comprends que les paramètres prennent leurs valeurs en tant que _variant_t. Comment puis-je obtenir du GUID à un _variant_t? Un cast produit une erreur et le type _variant_t ne prend pas de GUID dans le constructeur.Comment utiliser un GUID en tant que paramètre de requête ADO en utilisant C++ ADO

Je crée la commande et les objets paramètres de la manière suivante:

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? */)); 

Répondre

4

passer une chaîne, mis en forme avec des accolades. Si la valeur guid est stockée dans une variable de type System.Guid, vous pouvez utiliser le spécificateur de format "B". Comme ceci:

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

Voir this web page pour référence.

Oops, c'est du code C#, vous pouvez générer la chaîne en C++ en utilisant StringFromIID().

+0

Trouvé l'anser dans la page Web référencée. Merci. – lowglider

+0

Ce n'est pas la bonne réponse. Le code est en C++. Le type de paramètre attendu ici est un VARIANT contenant des informations de guidage. – Nadzzz

Questions connexes