DataTableReader.GetSchemaTable Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
DataTable Az oszlop metaadatait DataTableReaderleíró értéket ad vissza.
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
Válaszok
Az DataTable oszlop metaadatait leíró fájl.
Kivételek
A DataTableReader lezárva.
Példák
Az alábbi konzolalkalmazás-példa a megadott oszlop sémaadatait kéri le. Adja át az DisplaySchemaTableInfo eljárást egy DataTableReader és egy egész számnak, amely egy oszlop sorszámát jelöli a DataTableReaderkonzolablakban, és az eljárás sémainformációkat ad ki a konzolablaknak.
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
Megjegyzések
A GetSchemaTable metódus az egyes oszlopok metaadatait adja vissza a következő sorrendben:
| DataReader oszlop | Leírás |
|---|---|
| ColumnName | Az oszlop neve, ahogy az a DataTable. |
| ColumnOrdinal | Az oszlop sorszáma |
| Oszlopméret | -1, ha a ColumnSize (vagy MaxLength) tulajdonság DataColumn nem határozható meg vagy nem releváns; ellenkező esetben 0 vagy pozitív egész szám, amely tartalmazza az MaxLength értéket. |
| Numerikusprecizió | Ha az oszloptípus numerikus típus, akkor ez az oszlop maximális pontossága. Ha az oszloptípus nem numerikus adattípus, akkor ez null értékű. |
| Numerikus skálázás | Ha az oszlop adattípusa skálázási összetevővel rendelkezik, a tizedesvessző jobb oldalán adja vissza a számjegyek számát. Ellenkező esetben null értéket ad vissza. |
| Adattípus | Az oszlop mögöttes típusa. |
| ProviderType | Az oszlop adattípusának jelzője. Ha az oszlop adattípusa sorról sorra változik, ez az érték .Object Ez az oszlop nem tartalmazhat null értéket. |
| IsLong |
true ha az oszlop adattípusa és String tulajdonsága MaxLength -1. Ellenkező esetben false. |
| AllowDBNull |
trueha az AllowDbNull kényszer igaz értékre van állítva az oszlopban; egyéb esetben. false |
| IsReadOnly |
true ha az oszlop nem módosítható; egyéb esetben false. |
| IsRowVersion |
false, minden oszlophoz. |
| IsUnique |
true: Ebben az DataTable oszlopban nincs két olyan sor, amelyben ugyanaz az érték szerepelhet.
IsUnique akkor garantáltan igaz, ha az oszlop önmagában egy kulcsot jelöl, vagy ha egyedi típusú korlátozás van érvényben, amely csak erre az oszlopra vonatkozik.
false: Az oszlop ismétlődő értékeket tartalmazhat a DataTable. Ennek az oszlopnak az alapértelmezett értéke .false |
| IsKey |
true: Az oszlop olyan oszlopok egyike, amelyek együttesen egyedileg azonosítják a sorokat a DataTable. Az oszlopkészletnek IsKeytrue egyedileg kell azonosítania a sorokat a DataTable. Nem követelmény, hogy ez az oszlopkészlet minimális oszlopkészlet legyen. Ez az oszlopkészlet elsődleges DataTable kulcsból, egyedi kényszerből vagy egyedi indexből hozható létre.
false: Az oszlop nem szükséges a sor egyedi azonosításához. Ez az érték az, true ha az oszlop egyetlen vagy összetett elsődleges kulcsban vesz részt. Ellenkező esetben az értéke false. |
| IsAutoIncrement |
true: Az oszlop rögzített lépésekben rendel értékeket az új sorokhoz.
false: Az oszlop nem rendel értékeket az új sorokhoz rögzített növekményekben. Ennek az oszlopnak az alapértelmezett értéke .false |
| BaseCatalogName | Az oszlopot tartalmazó adattár katalógusának neve.
Null ha az alapkatalógus neve nem határozható meg. Az oszlop alapértelmezett értéke egy null érték. |
| BaseSchemaName | Ez az érték mindig Null. |
| BaseTableName | A DataTable neve. |
| BaseColumnName | Az oszlop neve a DataTable. |
| AutoIncrementSeed | A tulajdonság DataTable értékeAutoIncrementSeed. |
| AutoIncrementStep | A tulajdonság DataTable értékeAutoIncrementStep. |
| Alapértelmezett érték | A tulajdonság DataColumn értékeDefaultValue. |
| Expression | A kifejezési sztring, ha az aktuális oszlop egy kifejezésoszlop, és a kifejezésben használt összes oszlop ugyanahhoz T:System.Data.DataTable tartozik, amely a kifejezés oszlopát tartalmazza; egyébként null. |
| ColumnMapping | A MappingType .DataColumn A típus lehet az egyik Attribute, Elementvagy HiddenSimpleContent. Az alapértelmezett érték a Element. |
| BaseTableNamespace | A tulajdonság DataTable értékeNamespace. |
| BaseColumnNamespace | A tulajdonság DataColumn értékeNamespace. |