DataTableReader.GetSchemaTable Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt eine DataTable zurück, die die Spaltenmetadaten des DataTableReader beschreibt.
public:
override System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides Function GetSchemaTable () As DataTable
Gibt zurück
Eine DataTable, die die Spaltenmetadaten beschreibt.
Ausnahmen
Der DataTableReader ist geschlossen.
Beispiele
Im folgenden Konsolenanwendungsbeispiel werden Schemainformationen zu der angegebenen Spalte abgerufen. Übergeben Sie die DisplaySchemaTableInfo
Prozedur a DataTableReader und eine ganze Zahl, die die Ordnungsposition einer Spalte in der DataTableReader
darstellt, und die Prozedur gibt Schemainformationen an das Konsolenfenster aus.
private static void TestGetSchemaTable()
{
// Set up the data adapter, using information from
// the AdventureWorks sample database.
// Modify the SQL expression to retrieve
// data from a different table.
SqlDataAdapter adapter =
SetupDataAdapter("SELECT * FROM Sales.Customer");
// Fill the DataTable, retrieving all the schema information.
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
DataTable table = new DataTable();
adapter.Fill(table);
// Create the DataTableReader, and close it when done.
using (DataTableReader reader = new DataTableReader(table))
{
// Modify the column number to display information
// about a column other than column 0.
DisplaySchemaTableInfo(reader, 0);
}
Console.WriteLine();
Console.WriteLine("Press Enter to finish.");
Console.ReadLine();
}
private static void DisplaySchemaTableInfo(
DataTableReader reader, int ordinal)
{
// Given a DataTableReader, display schema
// information about a particular column.
try
{
DataTable schemaTable = reader.GetSchemaTable();
DataRow row = schemaTable.Rows[ordinal];
foreach (DataColumn col in schemaTable.Columns)
{
Console.WriteLine("{0}: {1}",
col.ColumnName, row[col.Ordinal]);
}
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("{0} is an invalid column number.",
ordinal);
}
}
private static SqlDataAdapter SetupDataAdapter(String sqlString)
{
// Assuming all the default settings, create a
// SqlDataAdapter working with the AdventureWorks
// sample database that's available with
// SQL Server.
String connectionString =
"Data source=(local);initial catalog=AdventureWorks;" +
"Integrated Security=True";
return new SqlDataAdapter(sqlString, connectionString);
}
Private Sub TestGetSchemaTable()
' Set up the data adapter, using information from
' the AdventureWorks sample database.
' Modify the SQL expression to retrieve
' data from a different table.
Dim adapter As SqlDataAdapter = _
SetupDataAdapter("SELECT * FROM Sales.Customer")
' Fill the DataTable, retrieving all the schema information.
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim table As New DataTable
adapter.Fill(table)
' Create the DataTableReader, and close it when done.
Using reader As New DataTableReader(table)
' Modify the column number to display information
' about a column other than column 0.
DisplaySchemaTableInfo(reader, 0)
End Using
Console.WriteLine()
Console.WriteLine("Press Enter to finish.")
Console.ReadLine()
End Sub
Private Sub DisplaySchemaTableInfo( _
ByVal reader As DataTableReader, ByVal ordinal As Integer)
' Given a DataTableReader, display schema
' information about a particular column.
Try
Dim schemaTable As DataTable = reader.GetSchemaTable()
Dim row As DataRow = schemaTable.Rows(ordinal)
For Each col As DataColumn In schemaTable.Columns
Console.WriteLine("{0}: {1}", _
col.ColumnName, row(col.Ordinal))
Next
Catch ex As IndexOutOfRangeException
Console.WriteLine("{0} is an invalid column number.", _
ordinal)
End Try
End Sub
Private Function SetupDataAdapter( _
ByVal sqlString As String) As SqlDataAdapter
' Assuming all the default settings, create a SqlDataAdapter
' working with the AdventureWorks sample database that's
' available with SQL Server.
Dim connectionString As String = _
"Data Source=(local);" & _
"Initial Catalog=AdventureWorks;" & _
"Integrated Security=true"
Return New SqlDataAdapter(sqlString, connectionString)
End Function
Hinweise
Die GetSchemaTable-Methode gibt Metadaten zu jeder Spalte in der folgenden Reihenfolge zurück:
DataReader-Spalte | BESCHREIBUNG |
---|---|
ColumnName | Der Name der Spalte, wie er in DataTableangezeigt wird. |
ColumnOrdinal | Die Ordnungszahl der Spalte |
ColumnSize | -1, wenn die ColumnSize Eigenschaft (oder MaxLength) des DataColumn nicht bestimmt werden kann oder nicht relevant ist, andernfalls 0 oder eine positive ganze Zahl, die den MaxLength Wert enthält. |
NumericPrecision | Wenn der Spaltentyp ein numerischer Typ ist, ist dies die maximale Genauigkeit der Spalte. Wenn der Spaltentyp kein numerischer Datentyp ist, ist dies ein NULL-Wert. |
NumericScale | Wenn der Spaltendatentyp über eine Skalierungskomponente verfügt, geben Sie die Anzahl der Ziffern rechts neben dem Dezimalpunkt zurück. Andernfalls wird ein NULL-Wert zurückgegeben. |
DataType | Der zugrunde liegende Typ der Spalte. |
ProviderType | Der Zähler des Datentyps der Spalte. Wenn der Datentyp der Spalte von Zeile zu Zeile variiert, ist Objectdieser Wert . Diese Spalte kann keinen NULL-Wert enthalten. |
IsLong | true , wenn der Datentyp der Spalte ist String und ihre MaxLength Eigenschaft -1 ist. Andernfalls false . |
AllowDBNull | true , wenn die AllowDbNull-Einschränkung für die Spalte auf true festgelegt ist; false andernfalls . |
IsReadOnly | true , wenn die Spalte nicht geändert werden kann; andernfalls false . |
IsRowVersion | false , für jede Spalte. |
IsUnique | true : Keine zwei Zeilen in der DataTable können denselben Wert in dieser Spalte aufweisen. IsUnique ist garantiert true, wenn die Spalte selbst einen Schlüssel darstellt oder wenn eine Einschränkung des Typs UNIQUE vorhanden ist, die nur für diese Spalte gilt. false : Die Spalte kann doppelte Werte im DataTable enthalten. Der Standardwert für diese Spalte ist false . |
IsKey | true : Die Spalte ist eine aus einer Reihe von Spalten, die die Zeile in der DataTableeindeutig identifizieren. Der Satz von Spalten mit IsKey festgelegt auf true muss eine Zeile in DataTable eindeutig identifizieren. Es ist nicht erforderlich, dass es sich bei dieser Menge Spalten um eine minimale Spaltenmenge handelt. Dieser Satz von Spalten kann aus einem DataTable Primärschlüssel, einer eindeutigen Einschränkung oder einem eindeutigen Index generiert werden. false : Die Spalte ist nicht erforderlich, um die Zeile eindeutig zu identifizieren. Dieser Wert ist, wenn die Spalte an einem einzelnen oder zusammengesetzten Primärschlüssel beteiligt ist true . Andernfalls ist false der Wert . |
IsAutoIncrement | true : Die Spalte weist neuen Zeilen in festen Schritten Werte zu. false : Die Spalte weist neuen Zeilen in festen Schritten keine Werte zu. Der Standardwert für diese Spalte ist false . |
BaseCatalogName | Der Name des Katalogs im Datenspeicher, der die Spalte enthält. Null , wenn der Name des Basiskatalogs nicht bestimmt werden kann. Der Standardwert für diese Spalte ist ein null Wert. |
BaseSchemaName | Dieser Wert ist immer Null . |
BaseTableName | Der Name von DataTable. |
BaseColumnName | Der Name der Spalte im DataTable. |
AutoIncrementSeed | Der Wert der DataTableEigenschaft "s AutoIncrementSeed ". |
AutoIncrementStep | Der Wert der DataTableEigenschaft "s AutoIncrementStep ". |
DefaultValue | Der Wert der DataColumnEigenschaft "s DefaultValue ". |
Ausdruck | Die Ausdruckszeichenfolge, wenn es sich bei der aktuellen Spalte um eine Ausdrucksspalte handelt und alle im Ausdruck verwendeten Spalten zu derselben gehören, die T:System.Data.DataTable die Ausdrucksspalte enthält, andernfalls null . |
ColumnMapping | Der MappingType wert, der dem zugeordnet ist DataColumn. Der Typ kann einer von Attribute , Element , Hidden oder SimpleContent sein. Der Standardwert ist Element . |
BaseTableNamespace | Der Wert der DataTableEigenschaft "s Namespace ". |
BaseColumnNamespace | Der Wert der DataColumnEigenschaft "s Namespace ". |