Trouver le groupe de propriétés et l'ID de la propriété pour la propriété que vous souhaitez. (Voir de 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é de l'ensemble de lignes. Le code à l'aide de la commande ou la session est similaire, mais utilise une interface différente.
Créez un objet CDBPropset à l'aide du groupe de propriété comme paramètre au constructeur. Par exemple:
CDBPropSet propset(DBPROPSET_ROWSET)
Appelez AddProperty, lui passant l'ID de propriété et une valeur à assigner à 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)
Utiliser le membre de données m_spUnkSite pour obtenir le pointeur vers l'objet qui a créé votre objet.
CAgentRowsetlt ;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis ;
CComQIPtr < IRowsetInfo, & IID_IRowsetInfo > spRowsetProps = pRowset
Utilisez l'interface IRowset pour appeler GetProperties. Passez la propriété comme un paramètre. Voici le code final:
CAgentRowsetlt ;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis ;
CComQIPtr < IRowsetInfo, & IID_IRowsetInfo > spRowsetProps = pRowset ;
ensemble.AddPropertyID(DBPROP_BOOKMARKS) ;
DBPROPSET * pPropSet = NULL ;
ULONG ulPropSet = 0 ;
HRESULT hr ;
Si (spRowsetProps)
HR = spRowsetProps - > GetProperties (1, ensemble, ulPropSet, & pPropSet) ;
Si (pPropSet)
{
CComVariant var = pPropSet - > rgProperties [0] .vvalue ;
CoTaskMemFree (pPropSet - > rgProperties) ;
CoTaskMemFree(pPropSet) ;
Si (SUCCEEDED(hr) & & (var.boolVal == valeur VARIANT_TRUE))
{
…
}
}