Nyelv

OdbcDataReader.GetSchemaTable Metódus

Definíció

DataTable Az oszlop metaadatait OdbcDataReaderleíró értéket ad vissza.

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

Válaszok

Az DataTable oszlop metaadatait leíró fájl.

Megvalósítás

Kivételek

Megjegyzések

A GetSchemaTable metódus az egyes oszlopok metaadatait a következő sorrendben adja vissza:

DataReader oszlop Leírás
ColumnName Az oszlop neve; lehet, hogy ez nem egyedi. Ha az oszlop neve nem határozható meg, a rendszer null értéket ad vissza. Ez a név mindig az aktuális nézetben vagy parancsszövegben az oszlop legutóbbi elnevezését tükrözi.
ColumnOrdinal Az oszlop nullaalapú sorszáma. Ez az oszlop nem tartalmazhat null értéket.
Oszlopméret Az oszlopban lévő érték maximális lehetséges hossza. Rögzített hosszúságú adattípust használó oszlopok esetében ez az adattípus mérete.
Numerikusprecizió Ha DbType numerikus adattípus, akkor ez az oszlop maximális pontossága. A pontosság az oszlop definíciójától függ. Ha DbType nem numerikus adattípus, ne használja az oszlopban lévő adatokat. Ha a mögöttes ODBC-illesztő pontossági értéket ad vissza egy nem numerikus adattípushoz, a rendszer ezt az értéket használja a sématáblában.
Numerikus skálázás Ha DbType igen Decimal, akkor a tizedesvessző jobb oldalán lévő számjegyek száma. Ellenkező esetben ez egy null érték. Ha a mögöttes ODBC-illesztő pontossági értéket ad vissza egy nem numerikus adattípushoz, a rendszer ezt az értéket használja a sématáblában.
Adattípus A közös nyelvi futtatókörnyezet típusának leképezése DbType.
ProviderType A mögöttes illesztőprogram típusa.
IsLong true ha az oszlop nagyon hosszú adatokat tartalmazó bináris hosszú objektumot (BLOB) tartalmaz. A nagyon hosszú adatok definíciója illesztőprogram-specifikus.
AllowDBNull true ha a fogyasztó null értékre állíthatja az oszlopot, vagy az illesztőprogram nem tudja megállapítani, hogy a fogyasztó null értékre állíthatja-e az oszlopot. Ellenkező esetben false. Az oszlopok null értékeket is tartalmazhatnak, még akkor is, ha nem állítható be null értékre.
IsReadOnly true ha az oszlop nem módosítható; egyéb esetben false.
IsRowVersion Adja meg, hogy az oszlop tartalmaz-e olyan állandó sorazonosítót, amely nem írható be, és nincs értelme, kivéve a sor identitását.
IsUnique true: Az alaptábla (a BaseTableName-ben visszaadott tábla) egyik sora sem rendelkezhet ugyanazzal az értékkel ebben az oszlopban. Az IsUnique garantáltan akkor jelenik true meg, ha az oszlop önmagában jelöl egy kulcsot, vagy egyedi típusú korlátozás van érvényben, amely csak erre az oszlopra vonatkozik.

false: Az oszlop ismétlődő értékeket tartalmazhat az alaptáblában. Ennek az oszlopnak az alapértelmezett értéke a következő false: .
IsKey true: Az oszlop a sorhalmaz azon oszlopkészleteinek egyike, amelyek együttesen egyedileg azonosítják a sort. Az IsKey beállítással true rendelkező oszlopoknak egyedileg kell azonosítaniuk a sorhalmaz egy sorát. Nem követelmény, hogy ez az oszlopkészlet minimális oszlopkészlet legyen. Ez az oszlopkészlet egy alaptábla elsődleges kulcsából, egy egyedi kényszerből vagy egy egyedi indexből hozható létre.

false: Az oszlop nem szükséges a sor egyedi azonosításához.
IsAutoIncrement true ha az oszlop rögzített növekményekben rendel értékeket az új sorokhoz; egyéb esetben false. Ennek az oszlopnak az alapértelmezett értéke a következő false: .
BaseSchemaName Az oszlopot tartalmazó adatforrás sémaneve. NULL érték, ha az alapkatalógus neve nem határozható meg. Ennek az oszlopnak az alapértelmezett értéke egy null érték.
BaseCatalogName Az oszlopot tartalmazó adattár katalógusának neve. NULL érték, ha az alapkatalógus neve nem határozható meg. Ennek az oszlopnak az alapértelmezett értéke egy null érték.
BaseTableName Az oszlopot tartalmazó adattárban lévő tábla vagy nézet neve. Null érték, ha az alaptábla neve nem határozható meg. Ennek az oszlopnak az alapértelmezett értéke null érték.
BaseColumnName Az adattár oszlopának neve. Az alias használata esetén ez eltérhet a ColumnName oszlopban visszaadott oszlop nevétől. Null érték, ha az alaposzlop neve nem határozható meg, vagy ha a sorhalmaz oszlopa származik, de nem azonos az adattár egyik oszlopával. Ennek az oszlopnak az alapértelmezett értéke egy null érték.

Az eredményhalmaz minden oszlopához egy sor lesz visszaadva.

Az ODBC-hez készült .NET-keretrendszer Data Provider feltételezi, hogy a metaadat-információk egy ODBC-illesztőből érhetők el, miután a SQLPrepare, SQLExecute vagy SQLExecuteDirect függvények neve el van hívva. Ahhoz, hogy a "SchemaOnly" parancs viselkedése megfelelően működjön, az SQLPrepare-nak vissza kell adnia a szükséges metaadat-információkat. Nem minden ODBC-illesztőprogram támogatja ezt a függvényt, és nem ad vissza metaadat-információkat. Ezekben az esetekben a Sématáblában lévő információk egy része vagy egésze hiányzik. Az SQLPrepare meghívása után az adatszolgáltató meghívja az ODBC SQLColAttribute függvényt , hogy megkeresse a lekérdezés eredményeinek egyes oszlopaihoz kapcsolódó metaadatokat (például IsLong, IsUnique, AllowDBNull, BaseTableName, BaseColumnName). Ha a mögöttes illesztőprogram nem ad vissza néhány információt, a sématábla megfelelő értékei nem lesznek megfelelően beállítva.

Az ODBC-hez készült .NET-keretrendszer Data Provider meghívja a SQLPrimaryKeys is, hogy lekérje az összes tábla kulcsadatait. Ha a mögöttes ODBC-illesztő nem támogatja ezt a függvényt, az adatszolgáltató meghívja az SQLStatisticst , és kiválasztja az egyedi indexek egyikét a tábla elsődleges kulcsaként. Ez nem mindig adja meg a kívánt eredményeket.

OdbcCommandBuilder a megfelelő működéshez szüksége van a tábla elsődleges kulcsainak helyes azonosítására. Ha a BaseTableName nem ad vissza minden oszlopot a lekérdezés eredményében, a .NET Framework Data Provider az ODBC-hez megpróbálja elemezni az SQL-utasítást, hogy megtalálja a lekérdezésben érintett táblaneveket. Ez az UPDATE, INSERT, DELETE és egyszerű SELECT utasításokkal működik, de nem tárolt eljárásokkal vagy illesztéseken alapuló SELECT utasításokkal. Ha a táblázatból hiányzik néhány vagy az összes sémainformáció, a OdbcCommandBuilder rendszer nem fog megfelelően működni, mert nem rendelkezik elegendő sémainformációval a megfelelő INSERT, UPDATE vagy DELETE utasítások automatikus létrehozásához.

Annak biztosításához, hogy a metaadatoszlopok a megfelelő információkat adjanak vissza, a KeyInfo viselkedési paraméterrel kell hívnia ExecuteReader . Ellenkező esetben a sématábla egyes oszlopai alapértelmezett, null vagy helytelen adatokat adhatnak vissza.

Ha ODBC-t használ.NET az Oracle-hez az ODBC-illesztőprogramon keresztül, az aliasált kulcsoszlopok nem lesznek felismerve kulcsként. Ez hatással van az OdbcDataReader sématáblájának IsKey és IsUnique oszlopára. Emellett hatással van az OdbcCommandBuilder frissítési logikájának létrehozására. Fontolja meg, hogy nem használ aliast elsődleges kulcsoszlophoz.

Note

A Microsoft Jet ODBC-illesztő mindig null értékűként adja vissza az egyedi index- és elsődlegeskulcs-oszlopokat, függetlenül attól, hogy null értékűek-e. Az illesztőprogram nem ad vissza elsődleges kulcsadatokat; csak az egyedi indexek és azok oszlopainak listáját adja vissza, beleértve az elsődleges kulcsoszlopokat is, anélkül, hogy megkülönbözteti őket.

A következőre érvényes:

Lásd még