IDBSchemaRowsetImpl — Klasa
Zapewnia implementację zestawów wierszy schematu.
Składnia
template <class SessionClass>
class ATL_NO_VTABLE IDBSchemaRowsetImpl : public IDBSchemaRowset
Parametry
SessionClass
Klasa, według której IDBSchemaRowsetImpl
jest dziedziczona. Zazwyczaj ta klasa będzie klasą sesji użytkownika.
Wymagania
Nagłówek: atldb.h
Elementy członkowskie
Metody
Nazwa/nazwisko | opis |
---|---|
CheckRestrictions | Sprawdza poprawność ograniczeń względem zestawu wierszy schematu. |
CreateSchemaRowset | Implementuje funkcję twórcy obiektu COM dla obiektu określonego przez parametr szablonu. |
SetRestrictions | Określa, które ograniczenia są obsługiwane w określonym zestawie wierszy schematu. |
Metody interfejsu
Nazwa/nazwisko | opis |
---|---|
GetRowset | Zwraca zestaw wierszy schematu. |
GetSchemas | Zwraca listę zestawów wierszy schematu dostępnych dla IDBSchemaRowsetImpl::GetRowset. |
Uwagi
Ta klasa implementuje interfejs IDBSchemaRowset i funkcję templatized creator CreateSchemaRowset.
Ole DB używa zestawów wierszy schematu do zwracania danych dotyczących danych w dostawcy. Takie dane są często nazywane "metadanymi". Domyślnie dostawca musi zawsze obsługiwać elementy DBSCHEMA_TABLES
, DBSCHEMA_COLUMNS
i DBSCHEMA_PROVIDER_TYPES
, zgodnie z opisem w temacie IDBSchemaRowset w dokumentacji programisty OLE DB. Zestawy wierszy schematu są wyznaczone na mapie schematu. Aby uzyskać informacje o wpisach mapy schematu, zobacz SCHEMA_ENTRY.
Kreator dostawcy OLE DB w Kreatorze obiektów ATL automatycznie generuje kod dla zestawów wierszy schematu w projekcie. (Domyślnie kreator obsługuje wymienione wcześniej obowiązkowe zestawy wierszy schematu). Podczas tworzenia konsumenta przy użyciu Kreatora obiektów ATL kreator używa zestawów wierszy schematu do powiązania poprawnych danych z dostawcą. Jeśli zestawy wierszy schematu nie zostaną zaimplementowane w celu zapewnienia poprawnych metadanych, kreator nie będzie wiązać poprawnych danych.
Aby uzyskać informacje na temat obsługi zestawów wierszy schematu u dostawcy, zobacz Obsługa zestawów wierszy schematu.
Aby uzyskać więcej informacji na temat zestawów wierszy schematu, zobacz Zestawy wierszy schematu w dokumentacji programisty OLE DB.
IDBSchemaRowsetImpl::CheckRestrictions
Sprawdza poprawność ograniczeń względem zestawu wierszy schematu.
Składnia
HRESULT CheckRestrictions(REFGUID rguidSchema,
ULONG cRestrictions, const VARIANT rgRestrictions[]);
Parametry
rguidSchema
[in] Odwołanie do żądanego identyfikatora GUID zestawu wierszy schematu (na przykład DBSCHEMA_TABLES
).
cRestrictions
[in] Liczba ograniczeń przekazanych przez użytkownika dla zestawu wierszy schematu.
rgRestrictions
[in] Tablica długości cRestriction wartości ograniczeń do ustawienia. Aby uzyskać więcej informacji, zobacz opis parametru rgRestrictions w temacie SetRestrictions.
Uwagi
Służy CheckRestrictions
do sprawdzania ważności ograniczeń względem zestawu wierszy schematu. Sprawdza ograniczenia dotyczące DBSCHEMA_TABLES
zestawów wierszy , DBSCHEMA_COLUMNS
i DBSCHEMA_PROVIDER_TYPES
schematu. Wywołaj ją, aby określić, czy wywołanie IDBSchemaRowset::GetRowset
użytkownika jest poprawne. Jeśli chcesz obsługiwać zestawy wierszy schematu inne niż wymienione powyżej, należy utworzyć własną funkcję, aby wykonać to zadanie.
CheckRestrictions
Określa, czy użytkownik wywołuje metodę GetRowset z poprawnym ograniczeniem i prawidłowym typem ograniczenia (na przykład VT_BSTR dla ciągu), który obsługuje dostawca. Określa również, czy obsługiwana jest prawidłowa liczba ograniczeń. Domyślnie CheckRestrictions
będzie pytać dostawcę za pomocą wywołania SetRestrictions , które ograniczenia obsługuje w danym zestawie wierszy. Następnie porównuje ograniczenia od konsumenta z tymi obsługiwanymi przez dostawcę i kończy się powodzeniem lub niepowodzeniem.
Aby uzyskać więcej informacji na temat zestawów wierszy schematu, zobacz IDBSchemaRowset w dokumentacji programisty OLE DB w zestawie WINDOWS SDK.
IDBSchemaRowsetImpl::CreateSchemaRowset
Implementuje funkcję twórcy obiektu COM dla obiektu określonego przez parametr szablonu.
Składnia
template template <class SchemaRowsetClass>
HRESULT CreateSchemaRowset(IUnknown *pUnkOuter,
ULONG cRestrictions,
const VARIANT rgRestrictions[],
REFIID riid,
ULONG cPropertySets,
DBPROPSET rgPropertySets[],
IUnknown** ppRowset,
SchemaRowsetClass*& pSchemaRowset);
Parametry
pUnkOuter
[in] Zewnętrzny element IUnknown podczas agregacji, w przeciwnym razie null.
cRestrictions
[in] Liczba ograniczeń zastosowanych do zestawu wierszy schematu.
rgRestrictions
[in] Tablica wariantów cRestrictions
do zastosowania do zestawu wierszy.
riid
[in] Interfejs queryInterface dla elementu w danych wyjściowych IUnknown
.
cPropertySets
[in] Liczba zestawów właściwości do ustawienia.
rgPropertySets
[in] Tablica struktur DBPROPSET , które określają ustawiane właściwości.
ppRowset
[out] Wychodzące IUnknown
żądane przez riid. Jest to IUnknown
interfejs obiektu zestawu wierszy schematu.
pSchemaRowset
[out] Wskaźnik do wystąpienia klasy zestawu wierszy schematu. Zazwyczaj ten parametr nie jest używany, ale może być używany, jeśli musisz wykonać więcej pracy nad zestawem wierszy schematu przed przekazaniem go do obiektu COM. Okres istnienia elementu pSchemaRowset jest powiązany przez element ppRowset.
Wartość zwracana
Standardowa wartość HRESULT.
Uwagi
Ta funkcja implementuje ogólny twórca dla wszystkich typów zestawów wierszy schematu. Zazwyczaj użytkownik nie wywołuje tej funkcji. Jest wywoływana przez implementację mapy schematu.
IDBSchemaRowsetImpl::SetRestrictions
Określa, które ograniczenia są obsługiwane w określonym zestawie wierszy schematu.
Składnia
void SetRestrictions(ULONG cRestrictions,
GUID* /* rguidSchema */,
ULONG* rgRestrictions);
Parametry
cRestrictions
[in] Liczba ograniczeń w tablicy rgRestrictions i liczba identyfikatorów GUID w tablicy rguidSchema .
rguidSchema
[in] Tablica identyfikatorów GUID zestawów wierszy schematu, dla których mają być pobierane ograniczenia. Każdy element tablicy zawiera identyfikator GUID jednego zestawu wierszy schematu (na przykład DBSCHEMA_TABLES
).
rgRestrictions
[in] Tablica długości cRestriction wartości ograniczeń do ustawienia. Każdy element odpowiada ograniczeniom zestawu wierszy schematu zidentyfikowanego przez identyfikator GUID. Jeśli zestaw wierszy schematu nie jest obsługiwany przez dostawcę, element jest ustawiony na zero. W przeciwnym razie wartość ULONG zawiera maskę bitową, która reprezentuje ograniczenia obsługiwane w tym zestawie wierszy schematu. Aby uzyskać więcej informacji na temat ograniczeń odpowiadających określonemu zestawowi wierszy schematu, zapoznaj się z tabelą identyfikatorów GUID zestawu wierszy schematu w zestawie IDBSchemaRowset w dokumentacji programisty OLE DB w zestawie Windows SDK.
Uwagi
Obiekt IDBSchemaRowset
wywołuje metodę SetRestrictions
w celu określenia, które ograniczenia są obsługiwane w określonym zestawie wierszy schematu (jest wywoływany przez metodę GetSchemas za pośrednictwem wskaźnika upcasted). Ograniczenia umożliwiają konsumentom pobieranie tylko pasujących wierszy (na przykład znajdowanie wszystkich kolumn w tabeli "MyTable"). Ograniczenia są opcjonalne, a w przypadku, gdy żadna z nich nie jest obsługiwana (wartość domyślna), wszystkie dane są zawsze zwracane.
Domyślna implementacja tej metody ustawia rgRestrictions elementy tablicy na 0. Zastąpij wartość domyślną w klasie sesji, aby ustawić ograniczenia inne niż domyślne.
Aby uzyskać informacje na temat implementowania obsługi zestawów wierszy schematu, zobacz Obsługa zestawów wierszy schematu.
Przykład dostawcy obsługującego zestawy wierszy schematu można znaleźć w przykładzie UpdatePV .
Aby uzyskać więcej informacji na temat zestawów wierszy schematu, zobacz IDBSchemaRowset w dokumentacji programisty OLE DB w zestawie WINDOWS SDK.
IDBSchemaRowsetImpl::GetRowset
Zwraca zestaw wierszy schematu.
Składnia
STDMETHOD (GetRowset)(IUnknown *pUnkOuter,
REFGUID rguidSchema,
ULONG cRestrictions,
const VARIANT rgRestrictions[],
REFIID riid,
ULONG cPropertySets,
DBPROPSET rgPropertySets[],
IUnknown **ppRowset);
Parametry
pUnkOuter
[in] Zewnętrzne IUnknown
, gdy agreguje; w przeciwnym razie wartość NULL.
rguidSchema
[in] Odwołanie do żądanego identyfikatora GUID zestawu wierszy schematu (na przykład DBSCHEMA_TABLES
).
cRestrictions
[in] Liczba ograniczeń, które mają być stosowane do zestawu wierszy.
rgRestrictions
[in] Tablica wariantów cRestrictions
reprezentujących ograniczenia.
riid
[in] Identyfikator IID do żądania nowo utworzonego zestawu wierszy schematu.
cPropertySets
[in] Liczba zestawów właściwości do ustawienia.
rgPropertySets
[in/out] Tablica struktur DBPROPSET do ustawienia na nowo utworzonym zestawie wierszy schematu.
ppRowset
[out] Wskaźnik do żądanego interfejsu w nowo utworzonym zestawie wierszy schematu.
Uwagi
Ta metoda wymaga, aby użytkownik miał mapę schematu w klasie sesji. Korzystając z informacji o mapie schematu, tworzy dany obiekt zestawu wierszy, GetRowset
jeśli parametr rguidSchema jest równy jednemu z identyfikatorów GUID wpisów mapy. Aby uzyskać opis wpisu mapy, zobacz SCHEMA_ENTRY .
Zobacz IDBSchemaRowset::GetRowset w zestawie Windows SDK.
IDBSchemaRowsetImpl::GetSchemas
Zwraca listę zestawów wierszy schematu dostępnych dla IDBSchemaRowsetImpl::GetRowset.
Składnia
STDMETHOD (GetSchema s )(ULONG * pcSchemas,
GUID ** prgSchemas,
ULONG** prgRest);
Parametry
pcSchemas
[out] Wskaźnik do ULONG , który jest wypełniony liczbą schematów.
prgSchemas
[out] Wskaźnik do tablicy identyfikatorów GUID wypełnionych wskaźnikiem do tablicy identyfikatorów GUID zestawu wierszy schematu.
prgRest
[out] Wskaźnik do tablicy ULONG, który ma być wypełniony tablicą ograniczeń.
Uwagi
Ta metoda zwraca tablicę wszystkich zestawów wierszy schematu obsługiwanych przez dostawcę. Zobacz IDBSchemaRowset::GetSchemas w zestawie Windows SDK.
Implementacja tej funkcji wymaga, aby użytkownik miał mapę schematu w klasie sesji. Korzystając z informacji o mapie schematu, odpowiada ona tablicą identyfikatorów GUID schematów na mapie. Reprezentuje to schematy obsługiwane przez dostawcę.
Zobacz też
Klasy zestawów wierszy schematu i klasy Typedef
Obsługa zestawów wierszy schematu
SCHEMA_ENTRY
UpdatePV