Как ссылаться свойство в моем провайдере?

Найдите группу свойств и Идентификатор свойства для свойства, которое вы хотите. (См. свойства OLE DB в справочнике программиста OLE DB.)

В следующем примере предполагается, что вы пытаетесь получить свойство из набора строк. Код для использования сеанса или команды аналогичен, но использует другой интерфейс.

Создайте объект CDBPropset , используя группу свойств в качестве параметра конструктору. Например:

CDBPropSet propset(DBPROPSET_ROWSET)

Вызовите AddProperty, передав ему Идентификатор свойства и значение, присваиваемое свойству. Тип значения зависит от свойства, который вы используете.

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

Используйте члена данных m_spUnkSite для получения указателя на объект, создан ваш объект.

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

CComQIPtr < IRowsetInfo и IID_IRowsetInfo > spRowsetProps = pRowset

Используйте интерфейс IRowset для вызова метода GetProperties. Передайте свойство установлено как параметр. Вот окончательный код:

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

CComQIPtr < IRowsetInfo и IID_IRowsetInfo > spRowsetProps = pRowset;

Задайте.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET * pPropSet = NULL;
ULONG ulPropSet = 0;
HRESULT hr;

Если (spRowsetProps)
   HR = spRowsetProps - > GetProperties (1 и набор и ulPropSet и pPropSet);

Если (pPropSet)
{
   CComVariant var = pPropSet - > .vvalue rgProperties [0];
   CoTaskMemFree (pPropSet - > rgProperties);
   CoTaskMemFree(pPropSet);

Если (SUCCEEDED(hr) & & (var.boolVal == VARIANT_TRUE))
   {
      …
   }
}

Index