Uzyskiwanie metadanych za pomocą zestawów wierszy schematu
Czasami należy uzyskać informacje o dostawcy, zestawie wierszy, tabeli, kolumnach lub innych informacjach bazy danych bez otwierania zestawu wierszy. Dane dotyczące struktury bazy danych są nazywane metadanymi i mogą być pobierane przez wiele różnych metod. Jedną z metod jest użycie zestawów wierszy schematu.
Szablony OLE DB udostępniają zestaw klas do pobierania informacji o schemacie; te klasy tworzą wstępnie zdefiniowane zestawy wierszy schematu i są wymienione w klasach zestawów wierszy schematu i klasach Typedef.
Uwaga
Jeśli używasz OLAP, a niektóre zestawy wierszy nie są obsługiwane przez klasy zestawów wierszy schematu (na przykład masz zmienną liczbę kolumn), należy rozważyć użycie polecenia CManualAccessor
lub CDynamicAccessor
. Możesz przewijać kolumny i instrukcje przypadków użycia, aby obsłużyć możliwe typy danych dla każdej kolumny.
Model wykazu/schematu
Usługa ANSI SQL definiuje model wykazu/schematu dla magazynów danych; Ole DB używa tego modelu. W tym modelu wykazy (bazy danych) mają schematy i schematy mają tabele.
Wykaz Wykaz to inna nazwa bazy danych. Jest to kolekcja powiązanych schematów. Aby wyświetlić listę katalogów (baz danych) należących do danego źródła danych, użyj katalogu CCatalog. Ponieważ wiele baz danych ma tylko jeden wykaz, metadane są czasami nazywane informacjami o schemacie.
Schemat Schemat A to kolekcja obiektów bazy danych, które są własnością lub zostały utworzone przez określonego użytkownika. Aby wyświetlić listę schematów należących do danego użytkownika, użyj CSchemata.
W terminach Microsoft SQL Server i ODBC 2.x schemat jest właścicielem (na przykład dbo jest typową nazwą schematu). Ponadto program SQL Server przechowuje metadane w zestawie tabel: jedna tabela zawiera listę wszystkich tabel, a druga tabela zawiera listę wszystkich kolumn. W bazie danych programu Microsoft Access nie ma odpowiednika schematu.
Tabele tabel to kolekcje kolumn rozmieszczonych w określonych zamówieniach. Aby wyświetlić listę tabel zdefiniowanych w danym wykazie (bazie danych) i informacje o tych tabelach, użyj tabel CTables.
Ograniczenia
Podczas wykonywania zapytań dotyczących informacji o schemacie można użyć ograniczeń, aby określić typ informacji, w których cię interesujesz. Ograniczenia można traktować jako filtr lub kwalifikator w zapytaniu. Na przykład w zapytaniu:
SELECT * FROM authors WHERE l_name = 'pivo'
l_name
jest ograniczeniem. Jest to prosty przykład z tylko jednym ograniczeniem; klasy zestawów wierszy schematu obsługują kilka ograniczeń.
Klasy typedef zestawu wierszy schematu hermetyzują wszystkie zestawy wierszy schematu OLE DB, aby uzyskać dostęp do zestawu wierszy schematu tak samo jak w przypadku każdego innego zestawu wierszy, tworząc wystąpienie i otwierając go. Na przykład klasa CColumns klasy typedef jest zdefiniowana jako:
CRestrictions<CAccessor<CColumnsInfo>
Klasa CRestrictions zapewnia obsługę ograniczeń. Po utworzeniu wystąpienia zestawu wierszy schematu wywołaj metodę CRestrictions::Open. Ta metoda zwraca zestaw wyników na podstawie określonych ograniczeń.
Aby określić ograniczenia, zobacz Dodatek B: Zestawy wierszy schematu i wyszukaj używany zestaw wierszy. Na przykład odpowiada zestawowi wierszy KOLUMN. CColumns
Ten temat zawiera listę kolumn ograniczeń w zestawie wierszy KOLUMN: TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Należy postępować zgodnie z kolejnością określania ograniczeń.
Na przykład jeśli chcesz ograniczyć według nazwy tabeli, TABLE_NAME jest trzecią kolumną ograniczeń, a następnie wywołaj metodę Open
, określając nazwę tabeli jako trzeci parametr ograniczenia, jak pokazano w poniższym przykładzie.
Aby użyć zestawów wierszy schematu
Dołącz plik
Atldbsch.h
nagłówka (potrzebujeszAtldbcli.h
również pomocy technicznej dla konsumentów).Utworzenie wystąpienia obiektu zestawu wierszy schematu w pliku nagłówkowym odbiorcy lub dokumentu. Jeśli chcesz uzyskać informacje o tabeli, zadeklaruj
CTables
obiekt. Jeśli chcesz uzyskać informacje o kolumnie, zadeklarujCColumns
obiekt. W tym przykładzie pokazano, jak pobrać kolumny w tabeli autorów:CDataSource ds; ds.Open(); CSession ss; ss.Open(ds); CColumns columnSchemaRowset; // TABLE_NAME is the third restriction column, so // specify "authors" as the third restriction parameter: HRESULT hr = columnSchemaRowset.Open(ss, NULL, NULL, L"authors"); hr = columnSchemaRowset.MoveFirst(); while (hr == S_OK) { hr = columnSchemaRowset.MoveNext(); }
Aby pobrać informacje, uzyskaj dostęp do odpowiedniego elementu członkowskiego danych obiektu zestawu wierszy schematu, na przykład
ColumnSchemaRowset.m_szColumnName
. Ten element członkowski danych odpowiada COLUMN_NAME. Aby zobaczyć, która kolumna OLE DB odpowiada każdemu członkowi danych, zobacz CColumns.
Aby zapoznać się z odwołaniem do zestawu wierszy schematu, klasy typedef podane w szablonach OLE DB (zobacz Klasy zestawów wierszy schematu i Klasy typedef).
Aby uzyskać więcej informacji na temat zestawów wierszy schematu OLE DB, w tym kolumn ograniczeń, zobacz Dodatek B: Zestawy wierszy schematu w dokumentacji programisty OLE DB.
Aby uzyskać bardziej złożone przykłady używania klas zestawów wierszy schematu, zobacz przykłady catDB i DBViewer .
Aby uzyskać informacje o obsłudze zestawów wierszy schematu przez dostawcę, zobacz Obsługa zestawów wierszy schematu.