Udostępnij za pośrednictwem


OdbcDataReader.GetSchemaTable Metoda

Definicja

Zwraca obiekt DataTable , który opisuje metadane kolumny elementu OdbcDataReader.

public:
 override System::Data::DataTable ^ GetSchemaTable();
public:
 virtual System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable? GetSchemaTable ();
public System.Data.DataTable GetSchemaTable ();
public override System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
abstract member GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides Function GetSchemaTable () As DataTable
Public Function GetSchemaTable () As DataTable

Zwraca

Element DataTable opisujący metadane kolumny.

Implementuje

Wyjątki

Element OdbcDataReader jest zamknięty.

Uwagi

Metoda GetSchemaTable zwraca metadane dotyczące każdej kolumny w następującej kolejności:

Kolumna DataReader Opis
nazwa_kolumny Nazwa kolumny; może to nie być unikatowe. Jeśli nie można określić nazwy kolumny, zwracana jest wartość null. Ta nazwa zawsze odzwierciedla najnowsze nazewnictwo kolumny w bieżącym widoku lub tekście polecenia.
KolumnaOrdinal Liczba porządkowa oparta na zerach kolumny. Ta kolumna nie może zawierać wartości null.
Columnsize Maksymalna możliwa długość wartości w kolumnie. W przypadku kolumn używających typu danych o stałej długości jest to rozmiar typu danych.
NumericPrecision Jeśli DbType jest typem danych liczbowych, jest to maksymalna precyzja kolumny. Precyzja zależy od definicji kolumny. Jeśli DbType nie jest typem danych liczbowych, nie używaj danych w tej kolumnie. Jeśli bazowy sterownik ODBC zwraca wartość precyzji dla typu danych nieliczbowych, ta wartość jest używana w tabeli schematów.
Numericscale Jeśli DbType wartość to Decimal, liczba cyfr po prawej stronie przecinka dziesiętnego. W przeciwnym razie jest to wartość null. Jeśli bazowy sterownik ODBC zwraca wartość precyzji dla typu danych nieliczbowych, ta wartość jest używana w tabeli schematów.
typ_danych Mapuje typ środowiska uruchomieniowego języka wspólnego na DbType.
Typ dostawcy Podstawowy typ sterownika.
IsLong true jeśli kolumna zawiera obiekt Binary Long Object (BLOB), który zawiera bardzo długie dane. Definicja bardzo długich danych jest specyficzna dla sterownika.
Allowdbnull true jeśli konsument może ustawić kolumnę na wartość null lub jeśli sterownik nie może określić, czy odbiorca może ustawić kolumnę na wartość null. W przeciwnym razie wartość false. Kolumna może zawierać wartości null, nawet jeśli nie można jej ustawić na wartość null.
IsReadOnly true jeśli nie można zmodyfikować kolumny; w przeciwnym razie false.
IsRowVersion Ustaw, jeśli kolumna zawiera trwały identyfikator wiersza, do którego nie można zapisać, i nie ma znaczącej wartości z wyjątkiem tożsamości wiersza.
Isunique true: Brak dwóch wierszy w tabeli podstawowej (tabela zwrócona w kolumnie BaseTableName) może mieć taką samą wartość w tej kolumnie. IsUnique ma gwarancję true , że kolumna reprezentuje klucz samodzielnie lub jeśli istnieje ograniczenie typu UNIQUE, które ma zastosowanie tylko do tej kolumny.

false: Kolumna może zawierać zduplikowane wartości w tabeli podstawowej. Wartość domyślna dla tej kolumny to false.
Iskey true: Kolumna jest jednym z zestawów kolumn w zestawie wierszy, który wzięty ze sobą w unikatowy sposób identyfikuje wiersz. Zestaw kolumn z ustawioną wartością true IsKey musi jednoznacznie identyfikować wiersz w zestawie wierszy. Nie ma potrzeby, aby ten zestaw kolumn był minimalnym zestawem kolumn. Ten zestaw kolumn może być generowany na podstawie klucza podstawowego tabeli podstawowej, unikatowego ograniczenia lub unikatowego indeksu.

false: Kolumna nie jest wymagana do unikatowego identyfikowania wiersza.
IsAutoIncrement true jeśli kolumna przypisuje wartości do nowych wierszy w stałych przyrostach; w przeciwnym razie false. Wartość domyślna dla tej kolumny to false.
BaseSchemaName Nazwa schematu w źródle danych zawierającym kolumnę. Wartość NULL, jeśli nie można określić nazwy katalogu podstawowego. Wartość domyślna dla tej kolumny to wartość null.
Nazwa dziennika bazowego Nazwa wykazu w magazynie danych, który zawiera kolumnę. Wartość NULL, jeśli nie można określić nazwy katalogu podstawowego. Wartość domyślna dla tej kolumny to wartość null.
Nazwa tabeli bazowej Nazwa tabeli lub widoku w magazynie danych, który zawiera kolumnę. Wartość null, jeśli nie można określić nazwy tabeli podstawowej. Wartość domyślna tej kolumny to wartość null.
Nazwa kolumny bazowej Nazwa kolumny w magazynie danych. Może się to różnić od nazwy kolumny zwróconej w kolumnie Nazwakolumny, jeśli użyto aliasu. Wartość null, jeśli nie można określić nazwy kolumny podstawowej lub jeśli kolumna zestawu wierszy jest pochodna, ale nie identyczna, kolumna w magazynie danych. Wartość domyślna dla tej kolumny to wartość null.

Wiersz jest zwracany dla każdej kolumny w zestawie wyników.

Dostawca danych .NET Framework dla ODBC zakłada, że informacje o metadanych są dostępne ze sterownika ODBC po wywołaniu jednej z funkcji SQLPrepare, SQLExecute lub SQLExecuteDirect. Aby zachowanie polecenia "SchemaOnly" działało poprawnie, narzędzie SQLPrepare musi zwrócić wymagane informacje o metadanych. Nie wszystkie sterowniki ODBC obsługują tę funkcję lub zwracają informacje o metadanych. W takich przypadkach brakuje części lub wszystkich informacji w tabeli SchemaTable. Po wywołaniu narzędzia SQLPrepare dostawca danych wywołuje funkcję ODBC SQLColAttribute , aby znaleźć informacje o metadanych powiązane z każdą kolumną w wynikach zapytania (na przykład IsLong, IsUnique, AllowDBNull, BaseTableName, BaseColumnName). Jeśli podstawowy sterownik nie zwraca niektórych z tych informacji, odpowiednie wartości w tabeli SchemaTable nie zostaną ustawione poprawnie.

Dostawca danych .NET Framework dla ODBC wywołuje również elementy SQLPrimaryKeys w celu pobrania kluczowych informacji dla każdej tabeli. Jeśli podstawowy sterownik ODBC nie obsługuje tej funkcji, dostawca danych wywołuje funkcję SQLStatistics i wybiera jeden z unikatowych indeksów jako klucz podstawowy tabeli. Może to nie zawsze dać żądane wyniki.

OdbcCommandBuilder wymaga poprawnej identyfikacji kluczy podstawowych tabeli w celu poprawnego działania. Jeśli parametr BaseTableName nie jest zwracany dla każdej kolumny w wynikach zapytania, dostawca danych .NET Framework dla odBC próbuje przeanalizować instrukcję SQL, aby znaleźć nazwy tabel biorące udział w zapytaniu. Działa to z instrukcjami UPDATE, INSERT, DELETE i simple SELECT, ale nie z procedurami składowanymi lub instrukcjami SELECT opartymi na sprzężeniach. Jeśli brakuje niektórych lub wszystkich informacji o schemacie z tej tabeli, instrukcja nie będzie działać poprawnie, OdbcCommandBuilder ponieważ nie ma wystarczających informacji o schemacie, aby automatycznie wygenerować poprawne instrukcje INSERT, UPDATE lub DELETE.

Aby upewnić się, że kolumny metadanych zwracają poprawne informacje, należy wywołać ExecuteReader parametr zachowanie ustawiony na KeyInfo. W przeciwnym razie niektóre kolumny w tabeli schematów mogą zwracać dane domyślne, null lub nieprawidłowe.

Jeśli używasz ODBC.NET do oracle za pośrednictwem sterownika ODBC, aliasowane kolumny kluczy nie są rozpoznawane jako klucze. Ma to wpływ na kolumny IsKey i IsUnique w tabeli schematu odbcDataReader. Ma to również wpływ na zdolność OdbcCommandBuilder do generowania logiki aktualizacji. Rozważ użycie aliasu dla kolumny klucza podstawowego.

Uwaga

Sterownik Microsoft Jet ODBC zawsze zwraca unikatowe kolumny indeksu i klucza podstawowego jako dopuszczane do wartości null niezależnie od tego, czy są dopuszczane do wartości null, czy nie. Sterownik nie zwraca również informacji o kluczu podstawowym; Zwraca tylko listę unikatowych indeksów i ich kolumn, w tym kolumn klucza podstawowego, bez różnicowania między nimi.

Dotyczy

Zobacz też