Trovare il gruppo di proprietà e la proprietà ID per la proprietà che desidera. (Vedere proprietà di OLE DB al riferimento del programmatore di OLE DB.)
Nell'esempio seguente si presuppone che si sta cercando di ottenere una proprietà dal set di righe. Il codice per utilizzare il comando o la sessione è simile, ma utilizza un'interfaccia diversa.
Creare un oggetto CDBPropset utilizzando il gruppo di proprietà come parametro al costruttore. Ad esempio:
CDBPropSet propset(DBPROPSET_ROWSET)
Chiamare AddProperty, passando l'ID della proprietà e un valore da assegnare alla proprietà. Il tipo del valore dipende dalla proprietà che utilizzi.
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty (DBPROP_UPDATABILITY,
DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE)
Utilizzare il membro dati m_spUnkSite per ottenere il puntatore all'oggetto che ha creato l'oggetto.
CAgentRowsetlt;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis;
CComQIPtr < IRowsetInfo & IID_IRowsetInfo > spRowsetProps = pRowset
Utilizzare l'interfaccia IRowset chiamare GetProperties. Passare la proprietà come un parametro. Ecco il codice finale:
CAgentRowsetlt;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis;
CComQIPtr < IRowsetInfo & IID_IRowsetInfo > spRowsetProps = pRowset;
impostare.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET * pPropSet = NULL;
ULONG ulPropSet = 0;
HRESULT hr;
Se (spRowsetProps)
HR = spRowsetProps - > GetProperties (1, insieme, ulPropSet & pPropSet);
Se (pPropSet)
{
Var CComVariant = pPropSet - > .vvalue rgProperties [0];
CoTaskMemFree (pPropSet - > rgProperties);
CoTaskMemFree(pPropSet);
Se (SUCCEEDED(hr) & & (var.boolVal = = VARIANT_TRUE))
{
…
}
}