DataTableReader.GetSchemaTable メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
DataTable の列メタデータを記述する 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
戻り値
列メタデータを記述する DataTable。
例外
DataTableReader が閉じています。
例
次のコンソール アプリケーションの例では、指定した列に関するスキーマ情報を取得します。 内の列DataTableReader
のDisplaySchemaTableInfo
序数位置を表すプロシージャ a DataTableReader と整数を渡し、プロシージャはスキーマ情報をコンソール ウィンドウに出力します。
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
注釈
GetSchemaTable メソッドは、各列に関するメタデータを次の順序で返します。
DataReader 列 | [説明] |
---|---|
ColumnName | に表示される列の DataTable名前。 |
ColumnOrdinal | 列の序数 |
ColumnSize | の (または ) プロパティDataColumnをColumnSize決定できない場合、またはMaxLength関連しない場合は -1。それ以外の場合は、値を含む 0 または正のMaxLength 整数。 |
NumericPrecision | 列の型が数値型の場合、これは列の最大有効桁数です。 列の型が数値データ型でない場合、これは null 値です。 |
NumericScale | 列データ型にスケール コンポーネントがある場合は、小数点の右側の桁数を返します。 それ以外の場合は、null 値を返します。 |
DataType | 列の基になる型。 |
ProviderType | 列のデータ型のインジケーターです。 列のデータ型が行ごとに異なる場合、この値は です Object。 この列に NULL 値を含めることはできません。 |
IsLong | true 列のデータ型が で、そのMaxLengthプロパティが String -1 の場合は 。 それ以外の場合は false 。 |
AllowDBNull | true AllowDbNull 制約が列に対して true に設定されている場合は 。それ以外の場合は false 。 |
IsReadOnly | true 列を変更できない場合は 。それ以外の場合 false は 。 |
IsRowVersion | false すべての列に対して 。 |
IsUnique | true : 内の DataTable 2 つの行は、この列で同じ値を持つできません。 IsUnique は、列が単独でキーを表す場合、またはこの列にのみ適用される UNIQUE 型の制約がある場合に true であることが保証されます。 false : 列には、 に重複する値を DataTable 含めることができます。 この列の既定値は false です。 |
IsKey | true : 列は、 内の行 DataTableを一意に識別する列のセットの 1 つです。 が にtrue 設定されている列IsKey のセットは、 内の行を一意に識別するDataTable 必要があります。 この列のセットは列の最小セットである必要はありません。 この列のセットは、主キー、一意制約、または一意インデックスから DataTable 生成できます。 false : 行を一意に識別するために列は必要ありません。 この値は、 true 列が単一または複合主キーに参加している場合です。 それ以外の場合、その値は です false 。 |
IsAutoIncrement | true : 列は、固定増分で新しい行に値を割り当てます。 false : 列は、固定増分で新しい行に値を割り当てません。 この列の既定値は false です。 |
BaseCatalogName | 列を含むデータ ストア内のカタログの名前です。 Null ベース カタログ名を特定できない場合は 。 この列の既定値は 値です null 。 |
BaseSchemaName | この値は常に Null です。 |
BaseTableName | DataTable の名前。 |
BaseColumnName | 内の列の DataTable名前。 |
AutoIncrementSeed | の プロパティのDataTableAutoIncrementSeed値。 |
AutoIncrementStep | の プロパティのDataTableAutoIncrementStep値。 |
DefaultValue | の プロパティのDataColumnDefaultValue値。 |
Expression | 現在の列が式列であり、式で使用されるすべての列が式列を含むのと同じ T:System.Data.DataTable に属している場合は式文字列。それ以外の場合 null は 。 |
ColumnMapping | に MappingType 関連付 DataColumnけられている値。 型には、、または SimpleContent のいずれかをAttribute Element Hidden 指定できます。 既定値は Element です。 |
BaseTableNamespace | の プロパティのDataTableNamespace値。 |
BaseColumnNamespace | の プロパティのDataColumnNamespace値。 |
適用対象
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET