OdbcDataReader.GetSchemaTable Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí hodnotu DataTable , která popisuje metadata OdbcDataReadersloupce .
public:
virtual System::Data::DataTable ^ GetSchemaTable();
public:
override System::Data::DataTable ^ GetSchemaTable();
public System.Data.DataTable GetSchemaTable();
public override System.Data.DataTable GetSchemaTable();
abstract member GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Function GetSchemaTable () As DataTable
Public Overrides Function GetSchemaTable () As DataTable
Návraty
A DataTable , který popisuje metadata sloupce.
Implementuje
Výjimky
To OdbcDataReader je uzavřeno.
Poznámky
Metoda GetSchemaTable vrátí metadata o každém sloupci v následujícím pořadí:
| Sloupec DataReader | Description |
|---|---|
| ColumnName | Název sloupce; to nemusí být jedinečné. Pokud název sloupce nelze určit, vrátí se hodnota null. Tento název vždy odpovídá nejnovějšímu pojmenování sloupce v aktuálním zobrazení nebo textu příkazu. |
| Sloupcový pořadový | Pořadový řádek založený na nule sloupce. Tento sloupec nemůže obsahovat hodnotu null. |
| Velikost sloupce | Maximální možná délka hodnoty ve sloupci. U sloupců, které používají datový typ s pevnou délkou, je to velikost datového typu. |
| NumericPrecision | Pokud DbType se jedná o číselný datový typ, jedná se o maximální přesnost sloupce. Přesnost závisí na definici sloupce. Pokud DbType není číselný datový typ, nepoužívejte data v tomto sloupci. Pokud podkladový ovladač ODBC vrátí hodnotu přesnosti pro nečíselný datový typ, použije se tato hodnota v tabulce schématu. |
| NumericScale | Pokud DbType ano Decimal, počet číslic napravo od desetinné čárky. V opačném případě se jedná o hodnotu null. Pokud podkladový ovladač ODBC vrátí hodnotu přesnosti pro nečíselný datový typ, použije se tato hodnota v tabulce schématu. |
| datový typ | Mapuje na typ modulu CLR (Common Language Runtime) .DbType |
| ProviderType | Typ základního ovladače. |
| IsLong |
true Pokud sloupec obsahuje objekt BLOB (Binary Long Object), který obsahuje velmi dlouhá data. Definice velmi dlouhých dat je specifická pro jednotlivé ovladače. |
| Allowdbnull |
true pokud příjemce může nastavit sloupec na hodnotu null nebo pokud ovladač nemůže určit, zda příjemce může nastavit sloupec na hodnotu null. V opačném případě false. Sloupec může obsahovat hodnoty null, i když ho nelze nastavit na hodnotu null. |
| Je pouze pro čtení |
true pokud sloupec nelze změnit; jinak false. |
| IsRowVersion | Nastavte, pokud sloupec obsahuje trvalý identifikátor řádku, do kterého nelze zapisovat, a nemá žádnou smysluplnou hodnotu s výjimkou identity řádku. |
| IsUnique |
true: Žádné dva řádky v základní tabulce (tabulka vrácená v BaseTableName) mohou mít stejnou hodnotu v tomto sloupci. IsUnique je zaručeno true , že pokud sloupec představuje klíč sám nebo pokud existuje omezení typu UNIQUE, které platí pouze pro tento sloupec.false: Sloupec může obsahovat duplicitní hodnoty v základní tabulce. Výchozí hodnota pro tento sloupec je false. |
| Iskey |
true: Sloupec je jednou ze sad sloupců v sadě řádků, které společně jednoznačně identifikují řádek. Sada sloupců se sadou IsKey nastavenou na true jedinečnou identifikaci řádku v sadě řádků. Není nutné, aby tato sada sloupců byla minimální sadou sloupců. Tato sada sloupců se může generovat z primárního klíče základní tabulky, jedinečného omezení nebo jedinečného indexu.false: Sloupec není nutný k jednoznačné identifikaci řádku. |
| IsAutoIncrement |
true pokud sloupec přiřadí hodnoty novým řádkům v pevných přírůstcích; jinak false. Výchozí hodnota pro tento sloupec je false. |
| BaseSchemaName | Název schématu ve zdroji dat, který obsahuje sloupec. Hodnota NULL, pokud nelze určit název základního katalogu. Výchozí hodnota pro tento sloupec je null hodnota. |
| BaseCatalogName | Název katalogu v úložišti dat, který obsahuje sloupec. Hodnota NULL, pokud nelze určit název základního katalogu. Výchozí hodnota pro tento sloupec je null hodnota. |
| BaseTableName | Název tabulky nebo zobrazení v úložišti dat, který obsahuje sloupec. Hodnota null, pokud nelze určit název základní tabulky. Výchozí hodnota tohoto sloupce je null. |
| BaseColumnName | Název sloupce v úložišti dat. To se může lišit od názvu sloupce vráceného ve sloupci ColumnName, pokud byl použit alias. Hodnota null, pokud nelze určit název základního sloupce nebo pokud je sloupec sady řádků odvozen, ale není stejný jako sloupec v úložišti dat. Výchozí hodnota pro tento sloupec je null hodnota. |
Pro každý sloupec v sadě výsledků se vrátí řádek.
Zprostředkovatel dat .NET Framework pro rozhraní ODBC předpokládá, že informace o metadatech jsou k dispozici z ovladače ODBC po jednom z SQLPrepare, SQLExecute nebo SQLExecuteDirect. Aby chování příkazu SchemaOnly fungovalo správně, sqlPrepare musí vrátit požadované informace o metadatech. Ne všechny ovladače ODBC tuto funkci podporují nebo vrací informace o metadatech. V těchto případech chybí část nebo všechny informace v tabulce SchemaTable. Po volání SQLPrepare volá zprostředkovatel dat funkci ODBC SQLColAttribute k vyhledání informací metadat souvisejících s jednotlivými sloupci ve výsledcích dotazu (například IsLong, IsUnique, AllowDBNull, BaseTableName, BaseColumnName). Pokud podkladový ovladač nevrací některé z těchto informací, odpovídající hodnoty v tabulce SchemaTable nebudou správně nastaveny.
Rozhraní .NET Framework Zprostředkovatel dat pro rozhraní ODBC také volá SQLPrimaryKeys pro načtení klíčových informací pro každou tabulku. Pokud podkladový ovladač ODBC tuto funkci nepodporuje, zprostředkovatel dat volá funkci SQLStatistics a jako primární klíč tabulky zvolí jeden z jedinečných indexů. Nemusí se to vždy zobrazovat požadovaným výsledkům.
OdbcCommandBuilder potřebuje správnou identifikaci primárních klíčů tabulky, aby fungovala správně. Pokud baseTableName není vrácen pro každý sloupec ve výsledcích dotazu, .NET Framework Zprostředkovatel dat pro ODBC se pokusí analyzovat příkaz SQL a najít názvy tabulek zahrnuté v dotazu. To funguje s příkazy UPDATE, INSERT, DELETE a SIMPLE SELECT, ale ne s uloženými procedurami nebo příkazy SELECT na základě spojení. Pokud některé nebo všechny informace o schématu v této tabulce chybí, OdbcCommandBuilder nebude fungovat správně, protože neobsahuje dostatečné informace o schématu k automatickému vygenerování správných příkazů INSERT, UPDATE nebo DELETE.
Pokud chcete zajistit, aby sloupce metadat vracely správné informace, je nutné volat ExecuteReader s parametrem chování nastaveným na KeyInfo. V opačném případě mohou některé sloupce v tabulce schématu vrátit výchozí, null nebo nesprávná data.
Pokud používáte rozhraní ODBC.NET k Oracle prostřednictvím ovladače ODBC, sloupce s aliasy klíče se nerozpoznají jako klíče. To ovlivňuje sloupce IsKey a IsUnique v tabulce schématu OdbcDataReader. Ovlivňuje také schopnost OdbcCommandBuilder generovat logiku aktualizace. Zvažte použití aliasu pro sloupec primárního klíče.
Poznámka:
Ovladač Microsoft Jet ODBC vždy vrací sloupce jedinečného indexu a primárního klíče jako null bez ohledu na to, zda jsou nullable nebo ne. Ovladač také nevrací informace o primárním klíči; Vrátí pouze seznam jedinečných indexů a jejich sloupců, včetně sloupců primárního klíče, aniž by se mezi nimi odlišily.