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_TABLES
DBSCHEMA_COLUMNS
및 DBSCHEMA_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_TABLES
DBSCHEMA_COLUMNS
DBSCHEMA_PROVIDER_TYPES
제한을 확인합니다. 호출하여 소비자의 호출이 올바른지 확인합니다 IDBSchemaRowset::GetRowset
. 위에 나열된 것과 다른 스키마 행 집합을 지원하려면 이 작업을 수행할 사용자 고유의 함수를 만들어야 합니다.
CheckRestrictions
는 소비자가 공급자가 지원하는 올바른 제한 및 올바른 제한 유형(예: 문자열에 대한 VT_BSTR)을 사용하여 GetRowset을 호출하는지 여부를 결정합니다. 또한 올바른 개수의 제한이 지원되는지 확인합니다. 기본적으로 CheckRestrictions
는 SetRestrictions 호출을 통해 지정된 행 집합에서 지원되는 제한을 공급자에 요청합니다. 그런 다음 공급자가 지원하는 제한과 소비자의 제한을 비교하여 성공 또는 실패를 반환합니다.
스키마 행 집합에 대한 자세한 내용은 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] 행 집합에 적용할 cRestrictions
VARIANT배열입니다.
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] 제한을 나타내는 cRestrictions
VARIANT배열입니다.
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