다음을 통해 공유


CUtlProps 클래스

다양한 OLE DB 속성 인터페이스(예: IDBProperties, IDBPropertiesIRowsetInfo)에 대한 속성을 구현합니다.

구문

template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase

매개 변수

T
를 포함하는 클래스입니다 BEGIN_PROPSET_MAP.

요구 사항

헤더: atldb.h

멤버

메서드

속성 설명
GetPropValue 속성 집합에서 속성을 가져옵니다.
IsValidValue 속성을 설정하기 전에 값의 유효성을 검사하는 데 사용됩니다.
OnInterfaceRequested 소비자가 개체 만들기 인터페이스에서 메서드를 호출할 때 선택적 인터페이스에 대한 요청을 처리합니다.
OnPropertyChanged 연결된 속성을 처리하도록 속성을 설정한 후 호출됩니다.
SetPropValue 속성 집합의 속성을 설정합니다.

설명

이 클래스의 대부분은 구현 세부 정보입니다.

CUtlProps에는 속성을 내부적으로 설정하기 위한 GetPropValue 및 SetPropValue의 두 멤버가 포함되어 있습니다.

속성 집합 맵 에 사용되는 매크로에 대한 자세한 내용은 BEGIN_PROPSET_MAPEND_PROPSET_MAP 참조하세요.

CUtlProps::GetPropValue

속성 집합에서 속성을 가져옵니다.

구문

OUT_OF_LINE HRESULT GetPropValue(const GUID* pguidPropSet,
   DBPROPID dwPropId,
   VARIANT* pvValue);

매개 변수

pguidPropSet
[in] PropSet의 GUID입니다.

dwPropId
[in] 속성 인덱스입니다.

pvValue
[out] 새 속성 값을 포함하는 변형에 대한 포인터입니다.

Return Value

Failure 실패하고 성공하면 S_OK.

CUtlProps::IsValidValue

속성을 설정하기 전에 값의 유효성을 검사하는 데 사용됩니다.

구문

virtual HRESULT CUtlPropsBase::IsValidValue(ULONG /* iCurSet */,
   DBPROP* pDBProp);

매개 변수

iCurSet
속성 집합 배열의 인덱스입니다. 속성 집합이 하나만 있는 경우 0입니다.

pDBProp
DBPROP 구조체의 속성 ID 및 새 값입니다.

Return Value

표준 HRESULT입니다. 기본 반환 값은 S_OK.

설명

속성을 설정하는 데 사용하려는 값에서 실행하려는 유효성 검사 루틴이 있는 경우 이 함수를 재정의해야 합니다. 예를 들어 암호 테이블에 대해 DBPROP_AUTH_PASSWORD 유효성을 검사하여 유효한 값을 확인할 수 있습니다.

CUtlProps::OnInterfaceRequested

소비자가 개체 만들기 인터페이스 중 하나에서 메서드를 호출할 때 선택적 인터페이스에 대한 요청을 처리합니다.

구문

virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);

매개 변수

riid
[in] 요청된 인터페이스의 IID입니다. 자세한 내용은 MDAC SDKOLE DB 프로그래머 참조에서 riid 매개 변수 ICommand::Execute대한 설명을 참조하세요.

설명

OnInterfaceRequested는 소비자가 개체 만들기 인터페이스 중 하나(예: IDBCreateSession, IDBCreateCommandIOpenRowset또는ICommand)에서 메서드를 호출할 때 선택적 인터페이스에 대한 소비자 요청을 처리합니다. 요청된 인터페이스에 대한 해당 OLE DB 속성을 설정합니다. 예를 들어 소비자가 요청하는 IID_IRowsetLocateOnInterfaceRequested 경우 인터페이스를 DBPROP_IRowsetLocate 설정합니다. 이렇게 하면 행 집합을 만드는 동안 올바른 상태가 유지됩니다.

이 메서드는 소비자가 호출 IOpenRowset::OpenRowset 하거나 ICommand::Execute.

소비자가 개체를 열고 선택적 인터페이스를 요청하는 경우 공급자는 해당 인터페이스와 연결된 속성을 VARIANT_TRUE 설정해야 합니다. 속성별 처리를 OnInterfaceRequested 허용하려면 공급자의 Execute 메서드가 호출되기 전에 호출됩니다. 기본적으로 OnInterfaceRequested 다음 인터페이스를 처리합니다.

  • IRowsetLocate

  • IRowsetChange

  • IRowsetUpdate

  • IConnectionPointContainer

  • IRowsetScroll

다른 인터페이스를 처리하려면 데이터 원본, 세션, 명령 또는 행 집합 클래스에서 이 함수를 재정의하여 함수를 처리합니다. 재정의는 기본 집합/가져오기 속성 인터페이스를 통해 설정 속성이 연결된 속성도 설정하도록 해야 합니다(OnPropertyChanged 참조).

CUtlProps::OnPropertyChanged

연결된 속성을 처리하도록 속성을 설정한 후 호출됩니다.

구문

virtual HRESULT OnPropertyChanged(ULONG /* iCurSet */,
   DBPROP* pDBProp);

매개 변수

iCurSet
속성 집합 배열의 인덱스입니다. 속성 집합이 하나만 있는 경우 0입니다.

pDBProp
DBPROP 구조체의 속성 ID 및 새 값입니다.

Return Value

표준 HRESULT입니다. 기본 반환 값은 S_OK.

설명

값이 다른 속성의 값에 종속된 책갈피 또는 업데이트와 같은 연결된 속성을 처리하려면 이 함수를 재정의해야 합니다.

예시

이 함수에서 사용자는 매개 변수에서 속성 ID를 DBPROP* 가져옵니다. 이제 ID를 체인에 대한 속성과 비교할 수 있습니다. 속성이 발견 SetProperties 되면 이제 다른 속성과 함께 설정될 속성과 함께 호출됩니다. 이 경우 , 또는 DBPROP_ORDEREDBOOKMARKS 속성을 가져오DBPROP_IRowsetLocateDBPROP_LITERALBOOKMARKS면 속성을 설정할 DBPROP_BOOKMARKS 수 있습니다.

HRESULT OnPropertyChanged(ULONG /*iCurSet*/, DBPROP* pDBProp)
{
   ATLASSERT(pDBProp != NULL);

   DWORD dwPropertyID = pDBProp->dwPropertyID;

   if (dwPropertyID == DBPROP_IRowsetLocate || 
      dwPropertyID == DBPROP_LITERALBOOKMARKS ||
      dwPropertyID == DBPROP_ORDEREDBOOKMARKS)
   {
      CComVariant var = pDBProp->vValue;

      if (var.boolVal == VARIANT_TRUE)
      {
         // Set the bookmarks property as these are chained
         CComVariant bookVar(true);
         CDBPropSet set(DBPROPSET_ROWSET);
         set.AddProperty(DBPROP_BOOKMARKS, bookVar);

         return SetProperties(1, &set);
      }
   }

   return S_OK;
}

CUtlProps::SetPropValue

속성 집합의 속성을 설정합니다.

구문

HRESULT SetPropValue(const GUID* pguidPropSet,
   DBPROPID dwPropId,
   VARIANT* pvValue);

매개 변수

pguidPropSet
[in] PropSet의 GUID입니다.

dwPropId
[in] 속성 인덱스입니다.

pvValue
[in] 새 속성 값을 포함하는 변형에 대한 포인터입니다.

Return Value

Failure 실패하고 성공하면 S_OK.

참고 항목

OLE DB 공급자 템플릿
OLE DB 공급자 템플릿 구조