DataTableReader.GetSchemaTable Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca element opisujący DataTable metadane kolumny obiektu DataTableReader.
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
Zwraca
Element DataTable opisujący metadane kolumny.
Wyjątki
Element DataTableReader jest zamknięty.
Przykłady
Poniższy przykład aplikacji konsolowej pobiera informacje o schemacie o określonej kolumnie. Przekaż procedurę DisplaySchemaTableInfo i DataTableReader liczbę całkowitą reprezentującą położenie porządkowe kolumny w obiekcie DataTableReader, a procedura zwraca informacje o schemacie do okna konsoli.
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
Uwagi
Metoda GetSchemaTable zwraca metadane dotyczące każdej kolumny w następującej kolejności:
| Kolumna DataReader | Opis |
|---|---|
| ColumnName | Nazwa kolumny wyświetlana w pliku DataTable. |
| KolumnaOrdinal | Porządkowe kolumny |
| Rozmiar kolumny | -1, jeśli ColumnSize nie można określić lub nie ma znaczenia właściwości DataColumn (lub MaxLength) ; w przeciwnym razie 0 lub dodatnia liczba całkowita zawierająca MaxLength wartość. |
| NumericPrecision | Jeśli typ kolumny jest typem liczbowym, jest to maksymalna precyzja kolumny. Jeśli typ kolumny nie jest typem danych liczbowych, jest to wartość null. |
| Numericscale | Jeśli typ danych kolumny ma składnik skalowania, zwróć liczbę cyfr z prawej strony punktu dziesiętnego. W przeciwnym razie zwróć wartość null. |
| Typ danych | Podstawowy typ kolumny. |
| Typ dostawcy | Wskaźnik typu danych kolumny. Jeśli typ danych kolumny różni się od wiersza do wiersza, ta wartość to Object. Ta kolumna nie może zawierać wartości null. |
| IsLong |
true jeśli typ danych kolumny to String i jego MaxLength właściwość to -1. W przeciwnym razie false. |
| Allowdbnull |
true jeśli ograniczenie AllowDbNull ma wartość true dla kolumny; w przeciwnym razie, false. |
| IsReadOnly |
true jeśli nie można zmodyfikować kolumny; w przeciwnym razie false. |
| IsRowVersion |
false, dla każdej kolumny. |
| IsUnique |
true: w tej kolumnie DataTable nie ma dwóch wierszy w tej kolumnie.
IsUnique Jest gwarantowana wartość true, jeśli kolumna reprezentuje klucz sam w sobie lub jeśli istnieje ograniczenie typu UNIQUE, które ma zastosowanie tylko do tej kolumny.
false: Kolumna może zawierać zduplikowane wartości w obiekcie DataTable. Wartość domyślna tej kolumny to false. |
| Iskey |
true: Kolumna jest jednym z zestawów kolumn, które wspólnie identyfikują wiersz w obiekcie DataTable. Zestaw kolumn z IsKey ustawioną wartością true musi unikatowo identyfikować wiersz w obiekcie DataTable. Nie ma potrzeby, aby ten zestaw kolumn był minimalnym zestawem kolumn. Ten zestaw kolumn może być generowany na podstawie klucza podstawowego DataTable , unikatowego ograniczenia lub unikatowego indeksu.
false: Kolumna nie jest wymagana do unikatowego identyfikowania wiersza. Ta wartość jest true taka, jeśli kolumna uczestniczy w pojedynczym lub złożonym kluczu podstawowym. W przeciwnym razie jego wartość to false. |
| IsAutoIncrement |
true: Kolumna przypisuje wartości do nowych wierszy w stałych przyrostach.
false: Kolumna nie przypisuje wartości do nowych wierszy w stałych przyrostach. Wartość domyślna tej kolumny to false. |
| BaseCatalogName | Nazwa wykazu w magazynie danych, który zawiera kolumnę.
Null jeśli nie można określić nazwy katalogu podstawowego. Wartość domyślna null dla tej kolumny to wartość. |
| BaseSchemaName | Ta wartość jest zawsze Null. |
| Nazwa tabeli bazowej | Nazwa elementu DataTable. |
| Nazwa kolumny bazowej | Nazwa kolumny w pliku DataTable. |
| Autoincrementseed | Wartość DataTablewłaściwości .s AutoIncrementSeed . |
| AutoInkrementKrok | Wartość DataTablewłaściwości .s AutoIncrementStep . |
| Wartość domyślna | Wartość DataColumnwłaściwości .s DefaultValue . |
| Wyrażenie | Ciąg wyrażenia, jeśli bieżąca kolumna jest kolumną wyrażenia, a wszystkie kolumny używane w wyrażeniu należą do tego samego T:System.Data.DataTable , który zawiera kolumnę wyrażenia; w przeciwnym razie null. |
| Mapowanie kolumn | Wartość MappingType skojarzona z elementem DataColumn. Typ może być jednym z Attribute, Element, Hiddenlub SimpleContent. Domyślna wartość to Element. |
| BaseTableNamespace | Wartość DataTablewłaściwości .s Namespace . |
| BaseColumnNamespace | Wartość DataColumnwłaściwości .s Namespace . |