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é souhaitée. Pour plus d’informations, consultez propriétés OLE DB dans la référence du programmeur OLE DB.

L’exemple suivant suppose que vous essayez d’obtenir une propriété à partir de l’ensemble de lignes. Le code d’utilisation de la session ou de la commande est similaire, mais utilise une autre interface.

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 transmettant l’ID de propriété et une valeur à affecter à la propriété. Le type de la 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. Transmettez le jeu de propriétés en tant que paramètre. Voici le code final :

CAgentRowset<CCustomCommand>* pRowset = (CAgentRowset<CCustomCommand>*) 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

Utilisation des modèles du fournisseur OLE DB