CUtlProps 클래스
다양한 OLE DB 속성 인터페이스(예: IDBProperties
, IDBProperties
및 IRowsetInfo
)에 대한 속성을 구현합니다.
구문
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_MAP 및 END_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 SDK의 OLE DB 프로그래머 참조에서 riid 매개 변수 ICommand::Execute
에 대한 설명을 참조하세요.
설명
OnInterfaceRequested
는 소비자가 개체 만들기 인터페이스 중 하나(예: IDBCreateSession
, IDBCreateCommand
IOpenRowset
또는ICommand
)에서 메서드를 호출할 때 선택적 인터페이스에 대한 소비자 요청을 처리합니다. 요청된 인터페이스에 대한 해당 OLE DB 속성을 설정합니다. 예를 들어 소비자가 요청하는 IID_IRowsetLocate
OnInterfaceRequested
경우 인터페이스를 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_IRowsetLocate
DBPROP_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.