공급자의 속성 참조
업데이트: 2007년 11월
원하는 속성의 속성 그룹과 속성 ID를 찾습니다. 자세한 내용은 OLE DB Programmer's Reference의 OLE DB Properties를 참조하십시오.
다음 예제에서는 행 집합에서 속성을 가져온다고 가정합니다. 세션이나 명령을 사용하는 것에 대한 코드는 비슷하지만 서로 다른 인터페이스를 사용합니다.
속성 그룹을 생성자에 대한 매개 변수로 사용하여 CDBPropSet 개체를 만듭니다. 예를 들면 다음과 같습니다.
CDBPropSet propset(DBPROPSET_ROWSET);
속성 ID와 속성에 할당할 값을 전달하여 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
}
}