DB2Methode DataReader.GetSchemaTable

Gibt eine DataTable zurück, die die Spaltenmetadaten von DB2DataReaderbeschreibt.

Namensbereich:
IBM.Data.DB2
Aufbau:
IBM.Data.DB2 (in IBM.Data.DB2.dll)

Syntax


[Visual Basic]
Public Function GetSchemaTable() As DataTable
[C#]
public DataTable GetSchemaTable();
[C++]
public: DataTable* GetSchemaTable();
[JScript]
public function GetSchemaTable() : DataTable;

Rückgabewert

Eine DataTable, die die Metadaten der Spalte beschreibt.

Ausnahmen

Typ der Ausnahmebedingung Bedingung
InvalidOperationException DB2®DataReader wird geschlossen.

Anmerkungen

Die Methode GetSchemaTable gibt Metadaten zu jeder Spalte in der folgenden Reihenfolge zurück.

Feldname Beschreibung
ColumnName Der Name der Spalte, falls er ermittelt werden kann. Der Name ist möglicherweise nicht eindeutig. Der Name gibt immer den zuletzt gültigen Namen der Spalte in der aktuellen Sicht oder im aktuellen Befehlstext wieder. Wenn der Spaltenname nicht ermittelt werden kann, wird ein Nullwert zurückgegeben.
ColumnOrdinal Die Ordinalzahl der Spalte. Dieser Wert ist null für die Lesezeichenspalte der Zeile (falls vorhanden). Andere Spalten werden beginnend mit 1 nummeriert. Dieses Feld darf keinen Nullwert enthalten.
ColumnSize Die maximal mögliche Länge für einen Wert in der Spalte. Bei Spalten, die einen Datentyp mit fester Länge verwenden, ist dieser Wert die Größe des Datentyps.
NumericPrecision Wenn der Db2® -Datentyp ein numerischer Datentyp ist, die maximale Genauigkeit der Spalte; andernfalls null.
NumericScale Wenn der DB2-Datentyp ein Dezimaldatentyp ist, ist dies die Anzahl Stellen rechts vom Dezimalzeichen, andernfalls null.
DataType Ein Datentyp, der dem DB2-Datentyp zugeordnet wird.
ProviderType Die Aufzählung des Typs Db2.
IsLong true, wenn die Spalte ein großes Binärobjekt (Binary Large Object, BLOB) mit sehr langen Daten enthält.
AllowDBNull true, wenn der Anwender die Spalte auf einen Nullwert setzen kann, oder wenn der Treiber nicht ermitteln kann, ob der Anwender die Spalte auf einen Nullwert setzen kann, sonst false. Eine Spalte kann einen Nullwert enthalten, selbst wenn sie nicht auf einen Nullwert gesetzt werden kann.
IsReadOnly true, wenn die Spalte nicht modifiziert werden kann, sonst false.
IsRowVersion Wird festgelegt, wenn die Spalte eine persistente Zeilenkennung enthält, in die nicht geschrieben werden kann.
IsUnique
true oder false, gemäß folgender Definition:
  • In: true. Keine zwei Zeilen in der Basistabelle, die in BaseTableName zurückgegeben werden, können denselben Wert in dieser Spalte haben. Der Wert der Spalte 'IsUnique' ist garantiert true , wenn die Spalte selbst einen Schlüssel darstellt oder wenn eine Integritätsbedingung des Typs UNIQUE vorliegt, die nur für diese Spalte gilt.
  • In: false. Die Spalte in der Basistabelle kann doppelte Werte enthalten. Der Standardwert für die Spalte 'IsUnique' ist false. Für Tabellen mit zusammengesetzten Primärschlüsseln wird der Wert der Spalte 'IsUnique' selbst dann als false aufgelistet, wenn für mindestens eine Spalte eine eindeutige Integritätsbedingung vorhanden ist.
IsKey true oder false, gemäß folgender Definition:
  • In: true. Die Spalte gehört zu einer Gruppe von Spalten in der Zeilengruppe, die zusammen die Zeile in der Zeilengruppe eindeutig identifizieren. Diese Spaltengruppe muss keine minimale Spaltengruppe sein. Diese Spaltengruppe kann aus dem Primärschlüssel einer Basistabelle, aus einer eindeutigen Integritätsbedingung oder aus einem eindeutigen Index generiert werden.
  • In: false. Die Spalte ist zur eindeutigen Identifizierung der Zeile nicht erforderlich.
IsAutoIncrement true, wenn die Spalte Werte für neue Zeilen in festgelegten Inkrementen zuordnet, sonst false. Der Standardwert für diese Spalte ist false.
BaseSchemaName Der Name des Schemas in der Datenbank, das die Spalte enthält, wenn der Name des Basisschemas ermittelt werden kann. Der Wert von 'BaseSchemaName' ist ein Nullwert, wenn der Name des Basisschemas nicht ermittelt werden kann. Der Standardwert für diese Spalte ist ein Nullwert.
BaseCatalogName Der Name des Katalogs in der Datenbank, der die Spalte enthält, wenn der Name des Katalogs ermittelt werden kann. Der Wert von 'BaseCatalogName' ist ein Nullwert, wenn der Name des Basiskatalogs nicht ermittelt werden kann. Der Standardwert für diese Spalte ist ein Nullwert.
BaseTableName Der Name der Tabelle oder Sicht in der Datenbank, die die Spalte enthält, wenn der Name der Tabelle ermittelt werden kann. Der Wert von 'BaseTableName' ist ein Nullwert, wenn der Name der Basistabelle nicht ermittelt werden kann. Der Standardwert für diese Spalte ist ein Nullwert.
BaseColumnName Der Name der Spalte in der Datenbank, falls möglich. Dieser Name kann von dem in der Spalte 'ColumName' zurückgegebenen Spaltennamen abweichen, wenn Sie einen Aliasnamen verwendet haben. Der Wert der Spalte 'BaseColumnName' ist ein Nullwert, wenn der Name der Basisspalte nicht ermittelt werden kann, oder wenn die Spalte für die Zeilengruppe zwar von einer Spalte in der Datenbank abgeleitet, jedoch nicht mit ihr identisch ist. Der Standardwert für die Spalte 'BaseColumnName' ist ein Nullwert.
modulename
  • Die beim Aufruf von DB2DataReader.GetSchemaTable() zurückgegebene Schematabelle enthält nun eine Spalte 'ModuleName' für optionale Dateneingabe, die gesetzt wird, wenn zu einem Modul gehörende Prozeduren verwendet werden. Diese neue Spalte 'ModuleName' wird am Ende der DataTable eingefügt, sodass die Anwendungen, die über Ordinalzahlen auf den Wert zugreifen, nicht betroffen sind. Auf diese Art wird ein vollständig qualifizierter Name einer Prozedur schema.module.procname in 3 Spalten der Schemadatentabelle 'BaseSchemaName', 'ModuleName' bzw. 'BaseTableName' aufgeteilt.
  • Die beim Aufruf von DB2Connection.GetSchema() zurückgegebene Schemadatentabelle gibt nun den Modulnamen für die Objektgruppen Procedures und ProcedureParameters zurück. Darüber hinaus wird die für jede dieser Objektgruppen festgelegte Einschränkung erweitert, sodass der Modulname als einer der Suchparameter enthalten ist.

Für jede Spalte der Ergebnismenge wird eine Zeile zurückgegeben.

DB2CommandBuilder muss die Primärschlüssel einer Tabelle korrekt identifizieren, um ordnungsgemäß zu funktionieren. Wenn die Spalte 'BaseTableName' nicht für jede Spalte in den Ergebnissen einer Abfrage zurückgegeben wird, versucht IBM® Data Server Provider for .NET, die SQL-Anweisung zu parsen, um die an der Abfrage beteiligten Tabellennamen zu finden. Dieser Ansatz funktioniert für UPDATE-, INSERT-, DELETE- und einfache SELECT-Anweisungen, jedoch nicht für gespeicherte Prozeduren und auf Joins basierende SELECT-Anweisungen. Wenn einige oder alle der Schemainformationen in einer Tabelle fehlen, funktioniert der DB2CommandBuilder nicht ordnungsgemäß, da er nicht über genügend Schemainformationen verfügt, um automatisch die richtigen INSERT-, UPDATE-oder DELETE-Anweisungen zu generieren.