OdbcDataReader.GetSchemaTable Metoda

Definice

Vrátí hodnotu DataTable , která popisuje metadata sloupce objektu OdbcDataReader.

public:
 override System::Data::DataTable ^ GetSchemaTable();
public:
 virtual System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable GetSchemaTable ();
public override System.Data.DataTable? GetSchemaTable ();
public 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

Návraty

A DataTable , který popisuje metadata sloupce.

Implementuje

Výjimky

Poznámky

Metoda GetSchemaTable vrátí metadata o jednotlivých sloupcích 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 odráží nejnovější název sloupce v aktuálním zobrazení nebo textu příkazu.
ColumnOrdinal Pořadová řada sloupce založená na nule. Tento sloupec nesmí obsahovat hodnotu null.
Columnsize Maximální možná délka hodnoty ve sloupci. U sloupců, které používají datový typ s pevnou délkou, se jedná o 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 je 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.
DataType Mapuje na typ modulu CLR (Common Language Runtime) DbType.
Providertype Základní typ 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ě hodnota false. Sloupec může obsahovat hodnoty null, i když ho nelze nastavit na hodnotu null.
IsReadOnly true pokud sloupec nelze upravit; jinak false.
IsRowVersion Nastavte, pokud sloupec obsahuje trvalý identifikátor řádku, do kterého nelze zapisovat a nemá žádnou smysluplnou hodnotu kromě identity řádku.
Isunique true: Žádné dva řádky v základní tabulce (tabulka vrácená v BaseTableName) nemohou mít v tomto sloupci stejnou hodnotu. IsUnique je zaručeno, true pokud sloupec představuje klíč sám nebo pokud existuje omezení typu UNIQUE, které se vztahuje pouze na 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 jedním ze sady sloupců v sadě řádků, které společně jednoznačně identifikují řádek. Sada sloupců s nastaveným isKey na true musí jednoznačně identifikovat řádek v sadě řádků. Není nutné, aby tato sada sloupců byla minimální sadou sloupců. Tato sada sloupců může být generována 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řazuje 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.
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.
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í identický se sloupcem v úložišti dat. Výchozí hodnota pro tento sloupec je null.

Řádek se vrátí pro každý sloupec v sadě výsledků.

Zprostředkovatel dat rozhraní .NET Framework pro rozhraní ODBC předpokládá, že informace o metadatech jsou k dispozici z ovladače ODBC po volání funkce 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 podporují tuto funkci nebo vracejí informace o metadatech. V těchto případech budou některé nebo všechny informace v tabulce schématu chybět. Po volání SQLPrepare volá zprostředkovatel dat funkci ODBC SQLColAttribute a vyhledá informace o metadatech souvisejících s jednotlivými sloupci ve výsledcích dotazu (například IsLong, IsUnique, AllowDBNull, BaseTableName, BaseColumnName). Pokud podkladový ovladač nevrátí některé z těchto informací, odpovídající hodnoty v Tabulce schématu nebudou správně nastaveny.

Zprostředkovatel dat rozhraní .NET Framework pro rozhraní ODBC také volá SQLPrimaryKeys , aby načetl informace o klíči pro každou tabulku. Pokud podkladový ovladač ODBC nepodporuje tuto funkci, zprostředkovatel dat zavolá SQLStatistics a zvolí jeden z jedinečných indexů jako primární klíč tabulky. To nemusí vždy poskytovat požadované výsledky.

OdbcCommandBuilder aby mohla správně fungovat, potřebuje správnou identifikaci primárních klíčů tabulky. Pokud baseTableName není vrácen pro každý sloupec ve výsledcích dotazu, zprostředkovatel dat rozhraní .NET Framework pro ROZHRANÍ ODBC se pokusí parsovat příkaz SQL najít názvy tabulek zahrnutých v dotazu. To funguje s příkazy UPDATE, INSERT, DELETE a jednoduchými příkazy SELECT, ale ne s uloženými procedurami nebo příkazy SELECT založenými na spojeních. Pokud v této tabulce chybí některé nebo všechny informace o schématu OdbcCommandBuilder , nebude funkce správně fungovat, protože neobsahuje dostatek informací o schématu k automatickému vygenerování správných příkazů INSERT, UPDATE nebo DELETE.

Chcete-li zajistit, aby sloupce metadat vracely správné informace, musíte volat ExecuteReader s parametrem chování nastaveným na KeyInfo. V opačném případě můžou některé sloupce v tabulce schématu vrátit výchozí, null nebo nesprávná data.

Pokud použijete ODBC.NET na Oracle prostřednictvím ovladače ODBC, sloupce klíčů s aliasy se nerozpoznají jako klíče. To má vliv na IsKey a IsUnique sloupce v tabulce schématu OdbcDataReader. To také ovlivňuje schopnost OdbcCommandBuilder generovat logiku aktualizace. Zvažte, že pro sloupec primárního klíče nebudete používat alias.

Poznámka

Ovladač Microsoft Jet ODBC vždy vrací jedinečné sloupce indexu a primárního klíče s možnou hodnotou null bez ohledu na to, zda jsou s možnou hodnotou null. 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šoval.

Platí pro

Viz také