Partilhar via


Fazendo referência a uma propriedade de seu provedor

Localize o agrupar de propriedades e a ID de propriedade para a propriedade desejada.Para obter mais informações, consulte Propriedades do OLE DB in the Referência do programador do OLE DB.

O exemplo a seguir pressupõe que você está tentando obter uma propriedade do conjunto de linhas.O código para usar o comando ou de sessão é semelhante, mas usa uma interface diferente.

Criar um CDBPropSet objeto usando o agrupar de propriedades sistema autônomo o parâmetro ao construtor.Por exemplo:

CDBPropSet propset(DBPROPSET_ROWSET);

De telefonarAddProperty, passando a ID de propriedade e um valor para ser atribuído à propriedade.O tipo do valor depende a propriedade que você está usando.

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

Use o IRowset interface de telefonar GetProperties.Passe a conjunto de propriedades sistema autônomo um parâmetro.Aqui está o código 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
   }
}

Consulte também

Conceitos

Trabalhando com modelos provedor OLE DB