Como referência a uma propriedade no meu provedor?

Encontre o grupo de propriedades e a identificação de propriedade para a propriedade desejada. (Ver Propriedades OLE DB no referência OLE DB Programmer.)

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

Crie um objeto CDBPropset usando o grupo de propriedade como o parâmetro para o Construtor. Por exemplo:

Propset(DBPROPSET_ROWSET) de CDBPropSet

Chamada AddProperty, passando a identificação de 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 o membro de dados m_spUnkSite para obter o ponteiro para o objeto que criou o objeto.

 CAgentRowsetlt;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis;

CComQIPtr < IRowsetInfo & IID_IRowsetInfo > spRowsetProps = pRowset

Use a interface de IRowset para chamar GetProperties. Passe a propriedade definida como um parâmetro. Aqui está o código final:

CAgentRowsetlt;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis;

CComQIPtr < IRowsetInfo & IID_IRowsetInfo > spRowsetProps = pRowset;

Defina.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET * pPropSet = NULL;
ULONG ulPropSet = 0;
HRESULT hr;

se (spRowsetProps)
   hr = spRowsetProps - > GetProperties (1, conjunto, & ulPropSet, & pPropSet);

se (pPropSet)
{
   CComVariant var = pPropSet - > .vvalue rgProperties [0];
   CoTaskMemFree (pPropSet - > rgProperties);
   CoTaskMemFree(pPropSet);

se (SUCCEEDED(hr) & & (var.boolVal = = VARIANT_TRUE))
   {
      …
   }
}

Index