DataTableReader.GetSchemaTable Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí hodnotu DataTable , která popisuje metadata sloupce objektu 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
Návraty
A DataTable , který popisuje metadata sloupce.
Výjimky
Je DataTableReader zavřený.
Příklady
Následující příklad konzolové aplikace načte informace o schématu o zadaném sloupci. Předejte proceduru DisplaySchemaTableInfo
DataTableReader a a celé číslo představující ordinální pozici sloupce v rámci DataTableReader
a procedura vypíše informace o schématu do okna konzoly.
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
Poznámky
Metoda GetSchemaTable vrací metadata o každém sloupci v následujícím pořadí:
Sloupec DataReader | Description |
---|---|
ColumnName | Název sloupce tak, jak se zobrazuje v DataTable. |
ColumnOrdinal | Ordinál sloupce |
Columnsize | -1, pokud ColumnSize vlastnost (nebo MaxLength) objektu DataColumn nelze určit nebo není relevantní; v opačném případě hodnota 0 nebo kladné celé číslo, které obsahuje MaxLength hodnotu. |
NumericPrecision | Pokud je typ sloupce číselný, jedná se o maximální přesnost sloupce. Pokud typ sloupce není číselným datovým typem, jedná se o hodnotu null. |
NumericScale | Pokud má datový typ sloupce součást měřítka, vrátí počet číslic napravo od desetinné čárky. V opačném případě vrátí hodnotu null. |
DataType | Základní typ sloupce. |
Providertype | Indikátor datového typu sloupce. Pokud se datový typ sloupce liší v jednotlivých řádcích, je Objecttato hodnota . Tento sloupec nesmí obsahovat hodnotu null. |
IsLong | true pokud je String datový typ sloupce a jeho MaxLength vlastnost je -1. V opačném případě hodnota false . |
Allowdbnull | true Pokud allowDbNull omezení je nastavena na true pro sloupec; v opačném případě . false |
IsReadOnly | true pokud sloupec nelze upravit; jinak false . |
IsRowVersion | false pro každý sloupec. |
Isunique | true : Žádné dva řádky v tomto DataTable sloupci nesmí mít stejnou hodnotu. IsUnique je zaručeno, že bude pravdivá, pokud sloupec představuje klíč sám o sobě nebo pokud existuje omezení typu UNIQUE, které se vztahuje pouze na tento sloupec. false : Sloupec může obsahovat duplicitní hodnoty v objektu DataTable . Výchozí hodnota tohoto sloupce je false . |
Iskey | true : Sloupec je jedním ze sady sloupců, které dohromady jednoznačně identifikují řádek v DataTable. Sada sloupců s nastavenou IsKey na true musí jednoznačně identifikovat řádek v DataTable . Není nutné, aby tato sada sloupců byla minimální sadou sloupců. Tato sada sloupců může být generována z primárního DataTable klíče, jedinečného omezení nebo jedinečného indexu. false : Sloupec není nutný k jednoznačné identifikaci řádku. Tato hodnota je true , pokud se sloupec účastní jednoho nebo složeného primárního klíče. V opačném případě je false jeho hodnota . |
IsAutoIncrement | true : Sloupec přiřazuje hodnoty novým řádkům v pevných přírůstcích. false : Sloupec nepřiřazuje hodnoty novým řádkům v pevných přírůstcích. Výchozí hodnota tohoto sloupce je false . |
BaseCatalogName | Název katalogu v úložišti dat, které obsahuje sloupec. Null pokud nelze určit název základního katalogu. Výchozí hodnota tohoto sloupce je null hodnota. |
BaseSchemaName | Tato hodnota je vždy Null . |
BaseTableName | Název procesu DataTable. |
BaseColumnName | Název sloupce v DataTable. |
AutoIncrementSeed | Hodnota DataTablevlastnosti '.AutoIncrementSeed |
AutoIncrementStep | Hodnota DataTablevlastnosti '.AutoIncrementStep |
Defaultvalue | Hodnota DataColumnvlastnosti '.DefaultValue |
Výraz | Řetězec výrazu, pokud je aktuální sloupec sloupcem výrazu a všechny sloupce použité ve výrazu patří do stejného T:System.Data.DataTable sloupce, který obsahuje sloupec výrazu; jinak null . |
ColumnMapping | Hodnota přidružená MappingType k DataColumn. Typ může být , Attribute Element , Hidden nebo SimpleContent . Výchozí hodnota je Element . |
BaseTableNamespace | Hodnota DataTablevlastnosti '.Namespace |
BaseColumnNamespace | Hodnota DataColumnvlastnosti '.Namespace |