Поделиться через


Обращение к свойству в поставщике

Определите группу и идентификатор требуемого свойства.Дополнительные сведения см. в разделе Свойства 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);

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

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

См. также

Основные понятия

Работа с шаблонами поставщика OLE DB