Partager via


Référencement d'une propriété dans votre fournisseur

Recherchez le groupe de propriétés et l'ID de propriété de la propriété qui vous intéresse. Pour plus d'informations, consultez Propriétés OLE DB dans OLE DB Programmer's Reference.

L'exemple suivant suppose que vous essayez d'obtenir une propriété à partir du jeu de lignes. Le code d'utilisation de la session ou de la commande est similaire, sauf qu'il utilise une interface différente.

Créez un objet CDBPropSet à l'aide du groupe de propriétés en tant que paramètre du constructeur. Par exemple :

CDBPropSet propset(DBPROPSET_ROWSET);

Appelez AddProperty, en lui passant l'ID de propriété et une valeur à assigner à la propriété. Le type de valeur dépend de la propriété que vous utilisez.

CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty(DBPROP_UPDATABILITY,
DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE);

Utilisez l'interface IRowset pour appeler GetProperties. Passez le jeu de propriétés en tant que paramètre. Voici le code final :

CAgentRowset<CMyProviderCommand>* pRowset = (CAgentRowset<CMyProviderCommand>*) pThis;

CComQIPtr<IRowsetInfo, &IID_IRowsetInfo> spRowsetProps = pRowset;

DBPROPIDSET set;
set.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET* pPropSet = NULL;
ULONG ulPropSet = 0;
HRESULT hr;

if (spRowsetProps)
   hr = spRowsetProps->GetProperties(1, &set, &ulPropSet, &pPropSet);

if (pPropSet)
{
   CComVariant var = pPropSet->rgProperties[0].vValue;
   CoTaskMemFree(pPropSet->rgProperties);
   CoTaskMemFree(pPropSet);

   if (SUCCEEDED(hr) && (var.boolVal == VARIANT_TRUE))
   {
      ...  // Use property here
   }
}

Voir aussi

Concepts

Utilisation des modèles du fournisseur OLE DB