OdbcDataReader.GetSchemaTable Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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
A OdbcDataReader lezárva.
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.