다음을 통해 공유


IDBSchemaRowsetImpl 클래스

스키마 행 집합에 대한 구현을 제공합니다.

구문

template <class SessionClass>
class ATL_NO_VTABLE IDBSchemaRowsetImpl : public IDBSchemaRowset

매개 변수

SessionClass
IDBSchemaRowsetImpl 이 상속되는 클래스입니다. 일반적으로 이 클래스는 사용자의 세션 클래스가 됩니다.

요구 사항

헤더: atldb.h

멤버

메서드

속성 설명
CheckRestrictions 스키마 행 집합에 대해 제한의 유효성을 검사합니다.
CreateSchemaRowset 템플릿 매개 변수로 지정된 개체에 대한 COM 개체 작성자 함수를 구현합니다.
SetRestrictions 특정 스키마 행 집합에서 지원되는 제한을 지정합니다.

인터페이스 메서드

속성 설명
GetRowset 스키마 행 집합을 반환합니다.
GetSchemas IDBSchemaRowsetImpl::GetRowset에서 액세스할 수 있는 스키마 행 집합 목록을 반환합니다.

설명

이 클래스는 IDBSchemaRowset 인터페이스 및 템플릿화된 작성자 함수 CreateSchemaRowset를 구현합니다.

OLE DB는 스키마 행 집합을 사용하여 공급자의 데이터에 대한 데이터를 반환합니다. 이러한 데이터를 "메타데이터"라고도 합니다. 기본적으로 공급자는 OLE DB 프로그래머 참조의 IDBSchemaRowset설명된 대로 항상 지원 DBSCHEMA_TABLESDBSCHEMA_COLUMNSDBSCHEMA_PROVIDER_TYPES지원해야 합니다. 스키마 행 집합은 스키마 맵에 지정됩니다. 스키마 맵 항목에 대한 자세한 내용은 SCHEMA_ENTRY를 참조하세요.

ATL 개체 마법사의 OLE DB 공급자 마법사는 프로젝트의 스키마 행 집합에 대한 코드를 자동으로 생성합니다. (기본적으로 마법사는 앞에서 언급한 필수 스키마 행 집합을 지원합니다.) ATL 개체 마법사를 사용하여 소비자를 만들 때 마법사는 스키마 행 집합을 사용하여 올바른 데이터를 공급자에 바인딩합니다. 올바른 메타데이터를 제공하는 스키마 행 집합을 구현하지 않은 경우 마법사는 올바른 데이터를 바인딩하지 않습니다.

공급자의 스키마 행 집합을 지원하는 방법에 대한 자세한 내용은 스키마 행 집합 지원을 참조하세요.

스키마 행 집합에 대한 자세한 내용은 OLE DB 프로그래머 참조 에서 스키마 행 집합을 참조하세요.

IDBSchemaRowsetImpl::CheckRestrictions

스키마 행 집합에 대해 제한의 유효성을 검사합니다.

구문

HRESULT CheckRestrictions(REFGUID rguidSchema,
   ULONG cRestrictions,  const VARIANT rgRestrictions[]);

매개 변수

rguidSchema
[in] 요청된 스키마 행 집합 GUID에 대한 참조입니다(예: DBSCHEMA_TABLES).

cRestrictions
[in] 스키마 행 집합에 대해 소비자가 전달한 제한 수입니다.

rgRestrictions
[in] 설정할 제한 값의 길이 cRestrictions 배열입니다. 자세한 내용은 SetRestrictions의 rgRestrictions 매개 변수에 대한 설명을 참조하세요.

설명

CheckRestrictions 를 사용하여 스키마 행 집합에 대해 제한의 유효성을 검사할 수 있습니다. 및 스키마 행 집합에 대한 DBSCHEMA_TABLESDBSCHEMA_COLUMNSDBSCHEMA_PROVIDER_TYPES 제한을 확인합니다. 호출하여 소비자의 호출이 올바른지 확인합니다 IDBSchemaRowset::GetRowset . 위에 나열된 것과 다른 스키마 행 집합을 지원하려면 이 작업을 수행할 사용자 고유의 함수를 만들어야 합니다.

CheckRestrictions는 소비자가 공급자가 지원하는 올바른 제한 및 올바른 제한 유형(예: 문자열에 대한 VT_BSTR)을 사용하여 GetRowset을 호출하는지 여부를 결정합니다. 또한 올바른 개수의 제한이 지원되는지 확인합니다. 기본적으로 CheckRestrictionsSetRestrictions 호출을 통해 지정된 행 집합에서 지원되는 제한을 공급자에 요청합니다. 그런 다음 공급자가 지원하는 제한과 소비자의 제한을 비교하여 성공 또는 실패를 반환합니다.

스키마 행 집합에 대한 자세한 내용은 Windows SDK의 OLE DB 프로그래머 참조에서 IDBSchemaRowset을 참조하세요.

IDBSchemaRowsetImpl::CreateSchemaRowset

템플릿 매개 변수로 지정된 개체에 대한 COM 개체 작성자 함수를 구현합니다.

구문

template template <class SchemaRowsetClass>
HRESULT CreateSchemaRowset(IUnknown *pUnkOuter,
   ULONG cRestrictions,
   const VARIANT rgRestrictions[],
   REFIID riid,
   ULONG cPropertySets,
   DBPROPSET rgPropertySets[],
   IUnknown** ppRowset,
   SchemaRowsetClass*& pSchemaRowset);

매개 변수

pUnkOuter
[in] 집계할 때 외부 IUnknown 이고, 그렇지 않으면 NULL입니다.

cRestrictions
[in] 스키마 행 집합에 적용된 제한 수입니다.

rgRestrictions
[in] 행 집합에 적용할 cRestrictionsVARIANT배열입니다.

riid
[in] 출력IUnknown에 대한 QueryInterface에 대한 인터페이스입니다.

cPropertySets
[in] 설정할 속성 집합 수입니다.

rgPropertySets
[in] 설정할 속성을 지정하는 DBPROPSET 구조체의 배열입니다.

ppRowset
[out] riid가 요청한 발신 IUnknown 입니다. 스키 IUnknown 마 행 집합 개체의 인터페이스입니다.

pSchemaRowset
[out] 스키마 행 집합 클래스의 인스턴스에 대한 포인터입니다. 일반적으로 이 매개 변수는 사용되지 않지만 COM 개체로 전달하기 전에 스키마 행 집합에서 추가 작업을 수행해야 하는 경우에 사용될 수 있습니다. pSchemaRowset의 수명은 ppRowset에 의해 바인딩됩니다.

Return Value

표준 HRESULT 값입니다.

설명

이 함수는 모든 형식의 스키마 행 집합에 대한 제네릭 작성자를 구현합니다. 일반적으로 사용자는 이 함수를 호출하지 않습니다. 스키마 맵 구현에 의해 호출됩니다.

IDBSchemaRowsetImpl::SetRestrictions

특정 스키마 행 집합에서 지원되는 제한을 지정합니다.

구문

void SetRestrictions(ULONG cRestrictions,
   GUID* /* rguidSchema */,
   ULONG* rgRestrictions);

매개 변수

cRestrictions
[in] rgRestrictions 배열의 제한 수 및 rguidSchema 배열의 GUID 입니다.

rguidSchema
[in] 제한을 페치할 스키마 행 집합의 GUID 배열입니다. 각 배열 요소는 스키마 행 집합 하나의 GUID를 포함합니다(예: DBSCHEMA_TABLES).

rgRestrictions
[in] 설정할 제한 값의 길이 cRestrictions 배열입니다. 각 요소는 GUID로 식별되는 스키마 행 집합에 대한 제한에 해당합니다. 공급자가 스키마 행 집합을 지원하지 않는 경우 요소는 0으로 설정됩니다. 그렇지 않은 경우에는 ULONG 값에 해당 스키마 행 집합에서 지원되는 제한을 나타내는 비트 마스크가 포함됩니다. 특정 스키마 행 집합에 해당하는 제한 사항에 대한 자세한 내용은 Windows SDK의 OLE DB 프로그래머 참조에서 IDBSchemaRowset의 스키마 행 집합 GUID 표를 참조하세요.

설명

개체는 IDBSchemaRowset 특정 스키마 행 집합에서 지원하는 제한을 결정하기 위해 호출 SetRestrictions 합니다(업캐스트된 포인터를 통해 GetSchemas에서 호출됨). 제한을 통해 소비자는 일치하는 행만 페치할 수 있습니다. 예를 들어 "MyTable" 테이블의 모든 열을 찾을 수 있습니다. 제한은 선택 사항이므로 지원되는 제한이 없는 경우(기본값) 항상 모든 데이터가 반환됩니다.

이 메서드의 기본 구현은 rgRestrictions 배열 요소를 0으로 설정합니다. 기본값 이외의 다른 제한을 설정하도록 세션 클래스의 기본값을 재정의합니다.

스키마 행 집합 지원 구현에 대한 자세한 내용은 스키마 행 집합 지원을 참조하세요.

스키마 행 집합을 지원하는 공급자에 대한 예제는 UpdatePV 샘플을 참조하세요.

스키마 행 집합에 대한 자세한 내용은 Windows SDK의 OLE DB 프로그래머 참조에서 IDBSchemaRowset을 참조하세요.

IDBSchemaRowsetImpl::GetRowset

스키마 행 집합을 반환합니다.

구문

STDMETHOD (GetRowset)(IUnknown *pUnkOuter,
   REFGUID rguidSchema,
   ULONG cRestrictions,
   const VARIANT rgRestrictions[],
   REFIID riid,
   ULONG cPropertySets,
   DBPROPSET rgPropertySets[],
   IUnknown **ppRowset);

매개 변수

pUnkOuter
[in] 집계할 때 외부 IUnknown 입니다. 그렇지 않으면 NULL입니다.

rguidSchema
[in] 요청된 스키마 행 집합 GUID에 대한 참조입니다(예: DBSCHEMA_TABLES).

cRestrictions
[in] 행 집합에 적용할 제한 수입니다.

rgRestrictions
[in] 제한을 나타내는 cRestrictionsVARIANT배열입니다.

riid
[in] 새로 만든 스키마 행 집합의 요청에 대한 IID입니다.

cPropertySets
[in] 설정할 속성 집합 수입니다.

rgPropertySets
[in/out] 새로 만든 스키마 행 집합에 설정할 DBPROPSET 구조체의 배열입니다.

ppRowset
[out] 새로 만든 스키마 행 집합에서 요청된 인터페이스에 대한 포인터입니다.

설명

이 메서드를 사용하려면 사용자에게 세션 클래스의 스키마 맵이 있어야 합니다. 스키마 맵 정보를 GetRowset 사용하여 rguidSchema 매개 변수가 지도 항목 GUID 중 하나와 같으면 지정된 행 집합 개체를 만듭니다. 맵 항목에 대한 설명은 SCHEMA_ENTRY 를 참조하세요.

Windows SDK에서 IDBSchemaRowset::GetRowset을 참조하세요.

IDBSchemaRowsetImpl::GetSchemas

IDBSchemaRowsetImpl::GetRowset에서 액세스할 수 있는 스키마 행 집합 목록을 반환합니다.

구문

STDMETHOD (GetSchema s )(ULONG * pcSchemas,
   GUID ** prgSchemas,
   ULONG** prgRest);

매개 변수

pcSchemas
[out] 스키마 수로 채워진 ULONG 의 포인터입니다.

prgSchemas
[out] 스키마 행 집합 GUID 배열의 포인터로 채워진 GUID 배열의 포인터입니다.

prgRest
[out] 제한 배열로 채울 ULONG배열의 포인터입니다.

설명

이 메서드는 공급자가 지원하는 모든 스키마 행 집합의 배열을 반환합니다. Windows SDK에서 IDBSchemaRowset::GetSchemas를 참조하세요.

이 함수를 구현하려면 사용자에게 세션 클래스의 스키마 맵이 있어야 합니다. 스키마 맵 정보를 사용하는 경우 맵의 스키마에 대한 GUID 배열로 응답합니다. 이는 공급자가 지원하는 스키마를 나타냅니다.

참고 항목

스키마 행 집합 클래스 및 Typedef 클래스
스키마 행 집합 지원
SCHEMA_ENTRY
UpdatePV