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 DataTableReadersloupce .
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
To DataTableReader je uzavřeno.
Příklady
Následující příklad konzolové aplikace načte informace o schématu o zadaném sloupci.
DisplaySchemaTableInfo Předejte proceduru DataTableReader a celé číslo představující pořadové umístění sloupce v rámci DataTableReadera 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, který se zobrazí v souboru DataTable. |
| Sloupcový pořadový | Pořadový řádek sloupce |
| Velikost sloupce | -1, pokud ColumnSize nelze určit (nebo MaxLength) vlastnost DataColumn , která není relevantní; jinak 0 nebo kladné celé číslo, které obsahuje MaxLength hodnotu. |
| NumericPrecision | Pokud je typ sloupce číselný typ, jedná se o maximální přesnost sloupce. Pokud typ sloupce není číselný datový typ, jedná se o hodnotu null. |
| NumericScale | Pokud datový typ sloupce obsahuje komponentu škálování, vrátí počet číslic napravo od desetinné čárky. V opačném případě vrátí hodnotu null. |
| datový typ | Základní typ sloupce. |
| ProviderType | Indikátor datového typu sloupce. Pokud se datový typ sloupce liší od řádku po řádek, je Objecttato hodnota . Tento sloupec nemůže obsahovat hodnotu null. |
| IsLong |
true pokud je datový typ sloupce String a jeho MaxLength vlastnost je -1. V opačném případě false. |
| Allowdbnull |
truePokud je pro sloupec nastaveno omezení AllowDbNull na hodnotu true; v opačném případě . false |
| Je pouze pro čtení |
true pokud sloupec nelze změnit; jinak false. |
| IsRowVersion |
falsepro každý sloupec. |
| IsUnique |
true: Žádné dva řádky v DataTable tomto sloupci mohou mít stejnou hodnotu.
IsUnique je zaručeno, že platí, pokud sloupec představuje klíč sám nebo pokud existuje omezení typu UNIQUE, které platí pouze pro tento sloupec.
false: Sloupec může obsahovat duplicitní hodnoty v objektu DataTable. Výchozí hodnota tohoto sloupce je false. |
| Iskey |
true: Sloupec je jednou ze sady sloupců, které dohromady jednoznačně identifikují řádek v sadě DataTable. Sada sloupců, IsKey které mají true nastavenou hodnotu, musí jednoznačně identifikovat řádek v sadě DataTable. Není nutné, aby tato sada sloupců byla minimální sadou sloupců. Tato sada sloupců se může generovat 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 jeho hodnota false. |
| 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 pro tento sloupec je null hodnota. |
| BaseSchemaName | Tato hodnota je vždy Null. |
| BaseTableName | Název DataTable. |
| BaseColumnName | Název sloupce v sadě DataTable. |
| Automatické zvýšeníSeed | Hodnota DataTablevlastnosti '.AutoIncrementSeed |
| AutoIncrementStep | Hodnota DataTablevlastnosti '.AutoIncrementStep |
| Výchozí hodnota | Hodnota DataColumnvlastnosti '.DefaultValue |
| Expression | Řetězec výrazu, pokud je aktuálním sloupcem sloupec výrazu a všechny sloupce použité ve výrazu patří do stejného T:System.Data.DataTable , který obsahuje sloupec výrazu; jinak null. |
| ColumnMapping | Hodnota MappingType přidružená k hodnotě DataColumn. Typ může být jeden z Attribute, Element, Hiddennebo SimpleContent. Výchozí hodnota je Element. |
| BaseTableNamespace | Hodnota DataTablevlastnosti '.Namespace |
| BaseColumnNamespace | Hodnota DataColumnvlastnosti '.Namespace |