OdbcDataReader.GetSchemaTable Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert een DataTable die de kolommetagegevens van de OdbcDataReader.
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
Retouren
Een DataTable die de metagegevens van de kolom beschrijft.
Implementeringen
Uitzonderingen
De OdbcDataReader is gesloten.
Opmerkingen
De GetSchemaTable methode retourneert metagegevens over elke kolom in de volgende volgorde:
| DataReader-kolom | Description |
|---|---|
| ColumnName | De naam van de kolom; dit is mogelijk niet uniek. Als de kolomnaam niet kan worden bepaald, wordt een null-waarde geretourneerd. Deze naam weerspiegelt altijd de meest recente naamgeving van de kolom in de huidige weergave of opdrachttekst. |
| ColumnOrdinal | Het op nul gebaseerde rangnummer van de kolom. Deze kolom mag geen null-waarde bevatten. |
| Kolomgrootte | De maximale lengte van een waarde in de kolom. Voor kolommen die een gegevenstype met een vaste lengte gebruiken, is dit de grootte van het gegevenstype. |
| Numeriekeprecisie | Als DbType dit een numeriek gegevenstype is, is dit de maximale precisie van de kolom. De precisie is afhankelijk van de definitie van de kolom. Als DbType dit geen numeriek gegevenstype is, gebruikt u de gegevens in deze kolom niet. Als het onderliggende ODBC-stuurprogramma een precisiewaarde retourneert voor een niet-numeriek gegevenstype, wordt deze waarde gebruikt in de schematabel. |
| Numericscale | Als DbType dat het is Decimal, wordt het aantal cijfers rechts van het decimaalteken weergegeven. Anders is dit een null-waarde. Als het onderliggende ODBC-stuurprogramma een precisiewaarde retourneert voor een niet-numeriek gegevenstype, wordt deze waarde gebruikt in de schematabel. |
| Gegevenstype | Wordt toegewezen aan het algemene type taalruntime van DbType. |
| ProviderType | Het onderliggende stuurprogrammatype. |
| IsLong |
true als de kolom een binair lang object (BLOB) bevat dat zeer lange gegevens bevat. De definitie van zeer lange gegevens is stuurprogrammaspecifiek. |
| AllowDBNull |
true als de consument de kolom kan instellen op een null-waarde of als het stuurprogramma niet kan bepalen of de gebruiker de kolom kan instellen op een null-waarde. Anders false. Een kolom kan null-waarden bevatten, zelfs als deze niet kan worden ingesteld op een null-waarde. |
| IsReadOnly |
true als de kolom niet kan worden gewijzigd; anders false. |
| IsRowVersion | Stel in als de kolom een permanente rij-id bevat waarnaar niet kan worden geschreven en geen zinvolle waarde heeft behalve de identiteit van de rij. |
| IsUnique |
true: Er mogen geen twee rijen in de basistabel (de tabel die wordt geretourneerd in BaseTableName) dezelfde waarde hebben in deze kolom. IsUnique is gegarandeerd true als de kolom een sleutel zelf vertegenwoordigt of als er een beperking van het type UNIQUE is die alleen van toepassing is op deze kolom.false: De kolom kan dubbele waarden in de basistabel bevatten. De standaardwaarde voor deze kolom is false. |
| IsKey |
true: De kolom is een van een set kolommen in de rijenset die samen de rij uniek identificeren. De set kolommen waarop IsKey is ingesteld, true moet een rij in de rijenset uniek identificeren. Er is geen vereiste dat deze set kolommen een minimale set kolommen is. Deze set kolommen kan worden gegenereerd op basis van een primaire basistabelsleutel, een unieke beperking of een unieke index.false: De kolom is niet vereist om de rij uniek te identificeren. |
| IsAutoIncrement |
true als de kolom waarden toewijst aan nieuwe rijen in vaste stappen; anders false. De standaardwaarde voor deze kolom is false. |
| BaseSchemaName | De naam van het schema in de gegevensbron die de kolom bevat. NULL als de naam van de basiscatalogus niet kan worden bepaald. De standaardwaarde voor deze kolom is een null-waarde. |
| BaseCatalogName | De naam van de catalogus in het gegevensarchief dat de kolom bevat. NULL als de naam van de basiscatalogus niet kan worden bepaald. De standaardwaarde voor deze kolom is een null-waarde. |
| BaseTableName | De naam van de tabel of weergave in het gegevensarchief dat de kolom bevat. Een null-waarde als de naam van de basistabel niet kan worden bepaald. De standaardwaarde van deze kolom is een null-waarde. |
| BaseColumnName | De naam van de kolom in het gegevensarchief. Dit kan afwijken van de kolomnaam die wordt geretourneerd in de kolom ColumnName als er een alias is gebruikt. Een null-waarde als de naam van de basiskolom niet kan worden bepaald of als de rijsetkolom is afgeleid, maar niet identiek is aan, een kolom in het gegevensarchief. De standaardwaarde voor deze kolom is een null-waarde. |
Er wordt een rij geretourneerd voor elke kolom in de resultatenset.
In het .NET Framework Data Provider voor ODBC wordt ervan uitgegaan dat metagegevensgegevens beschikbaar zijn vanuit een ODBC-stuurprogramma na een van SQLPrepare, SQLExecute of SQLExecuteDirect worden aangeroepen. Voor een correcte werking van de opdracht SchemaOnly moet SQLPrepare de vereiste metagegevensgegevens retourneren. Niet alle ODBC-stuurprogramma's ondersteunen deze functie of retourneren metagegevensgegevens. In deze gevallen ontbreekt een deel van de informatie in de schematabel. Na het aanroepen van SQLPrepare roept de gegevensprovider de functie ODBC SQLColAttribute aan om de metagegevensgegevens te vinden die betrekking hebben op elke kolom in de queryresultaten (bijvoorbeeld IsLong, IsUnique, AllowDBNull, BaseTableName, BaseColumnName). Als het onderliggende stuurprogramma geen deel van deze informatie retourneert, worden de bijbehorende waarden in de schematabel niet correct ingesteld.
De .NET Framework-Data Provider voor ODBC roept ook SQLPrimaryKeys aan om de sleutelgegevens voor elke tabel op te halen. Als het onderliggende ODBC-stuurprogramma deze functie niet ondersteunt, roept de gegevensprovider SQLStatistics aan en kiest een van de unieke indexen als primaire sleutel voor de tabel. Dit geeft mogelijk niet altijd de gewenste resultaten.
OdbcCommandBuilder heeft de juiste identificatie van de primaire sleutels van de tabel nodig om correct te kunnen werken. Als de BaseTableName niet wordt geretourneerd voor elke kolom in de queryresultaten, probeert de .NET Framework-Data Provider voor ODBC de SQL-instructie te parseren om de tabelnamen te vinden die bij de query horen. Dit werkt met UPDATE-, INSERT-, DELETE- en eenvoudige SELECT-instructies, maar niet met opgeslagen procedures of SELECT-instructies op basis van joins. Als sommige of alle schemagegevens ontbreken in deze tabel, werkt het OdbcCommandBuilder niet correct, omdat er onvoldoende schemagegevens zijn om automatisch de juiste INSERT-, UPDATE- of DELETE-instructies te genereren.
Om ervoor te zorgen dat metagegevenskolommen de juiste informatie retourneren, moet u aanroepen ExecuteReader met de gedragsparameter ingesteld op KeyInfo. Anders kunnen sommige kolommen in de schematabel standaardgegevens, null of onjuiste gegevens retourneren.
Wanneer u ODBC.NET via het ODBC-stuurprogramma naar Oracle gebruikt, worden aliassleutelkolommen niet herkend als sleutels. Dit is van invloed op de kolommen IsKey en IsUnique in de schematabel van odbcDataReader. Het is ook van invloed op de mogelijkheid van OdbcCommandBuilder om updatelogica te genereren. Overweeg geen alias te gebruiken voor een primaire-sleutelkolom.
Note
Het Microsoft Jet ODBC-stuurprogramma retourneert altijd unieke index- en primaire-sleutelkolommen als null-waarde, ongeacht of ze nullable zijn of niet. Het stuurprogramma retourneert ook geen primaire-sleutelgegevens; het retourneert alleen een lijst met unieke indexen en hun kolommen, inclusief primaire-sleutelkolommen, zonder er onderscheid tussen te maken.