Partilhar via


Fazendo referência a uma propriedade no provedor

Localize o grupo de propriedades e a ID da propriedade desejada. Para obter mais informações, confira Propriedades do OLE DB na Referência do programador OLE DB.

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

Crie um objeto CDBPropSet usando o grupo de propriedades como o parâmetro para o construtor. Por exemplo:

CDBPropSet propset(DBPROPSET_ROWSET);

Chame AddProperty, passando a ID da propriedade e um valor a ser atribuído à propriedade. O tipo do valor depende da 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 a interface IRowset para chamar GetProperties. Passe a propriedade definida como um parâmetro. Este é o código 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
   }
}

Confira também

Trabalhando com modelos de provedor do OLE DB