Condividi tramite


Riferimento a una proprietà nel provider

Cercare il gruppo e l'ID della proprietà desiderata. Per ulteriori informazioni, vedere Proprietà OLE DB in OLE DB Programmer's Reference (informazioni in lingua inglese).

Nell'esempio che segue si ipotizza un tentativo di ottenere una proprietà dal rowset. Il codice per l'utilizzo della sessione o del comando è simile, ma viene utilizzata un'interfaccia diversa.

Creare un oggetto CDBPropSet utilizzando il gruppo di proprietà come parametro da fornire al costruttore. Di seguito è riportato un esempio.

CDBPropSet propset(DBPROPSET_ROWSET);

Chiamare AddProperty, passando l'ID della proprietà e un valore da assegnare alla proprietà. Il tipo di valore dipende dalla proprietà utilizzata.

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

Utilizzare l'interfaccia IRowset per chiamare GetProperties. Passare l'insieme di proprietà come parametro. Di seguito viene riportato il codice finale:

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
   }
}

Vedere anche

Concetti

Utilizzo dei modelli provider OLE DB