Udostępnij za pośrednictwem


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_COLUMNSi 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_TABLESzestawów wierszy , DBSCHEMA_COLUMNSi 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 cRestrictionsdo 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 cRestrictionsreprezentują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