在提供程序中引用属性

查找所需属性的属性组和属性 ID。 有关更多信息,请参见“OLE DB Programmer's Reference”(《OLE DB 程序员参考》)中的 OLE DB 属性

下面的示例假设您正尝试从行集合中获取属性。 使用会话或命令的代码与此类似,但使用不同的接口。

创建 CDBPropSet 对象,将属性组用作构造函数的参数。 例如:

CDBPropSet propset(DBPROPSET_ROWSET);

调用 AddProperty,向它传递属性 ID 和要分配给属性的值。 值的类型取决于正使用的属性。

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 提供程序模板