DataTableReader.GetSchemaTable メソッド

定義

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

列メタデータを記述する DataTable

例外

DataTableReader が閉じています。

次のコンソールアプリケーションの例では、指定された列に関するスキーマ情報を取得します。 DisplaySchemaTableInfoプロシージャ a DataTableReader と、内の列の序数位置を表す整数を渡し 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 の (または ) プロパティを特定できない場合、または関連しない場合は -1。それ以外の場合は、値を含む 0 または正 ColumnSize MaxLength DataColumnMaxLength 整数。
NumericPrecision 列の型が数値型の場合、これは列の最大有効桁数です。 列の型が数値データ型ではない場合、これは null 値です。
NumericScale 列のデータ型にスケール コンポーネントがある場合は、小数点の右側にある桁数を返します。 それ以外の場合は、null 値を返します。
DataType 列の基になる型。
ProviderType 列のデータ型のインジケーターです。 列のデータ型が行ごとに異なる場合、この値はに Object なります。 この列に NULL 値を含めることはできません。
IsLong true 列のデータ型がで、 String その MaxLength プロパティが-1 の場合。 それ以外の場合は false
AllowDBNull true 列に対して AllowDbNull 制約が true に設定されている場合は、それ以外の場合は false
IsReadOnly true 列を変更できない場合はです。それ以外の場合は false
IsRowVersion falseすべての列に対して。
IsUnique true: 内の2つの行で、 DataTable この列の値を同じにすることはできません。 IsUnique 列がそれ自体によってキーを表している場合、またはこの列にのみ適用される UNIQUE 型の制約がある場合、は true であることが保証されます。 false: 列には、内の重複する値を含めることができ DataTable ます。 この列の既定値は false です。
IsKey true: 列は、内の行を一意に識別するために使用される列のセットの1つです DataTable 。 がに設定された列のセットで IsKey true は、内の行を一意に識別する必要があり DataTable ます。 この列のセットは列の最小セットである必要はありません。 この一連の列は、 DataTable 主キー、一意の制約、または一意のインデックスから生成されます。 false: 列は、行を一意に識別するためには必要ありません。 この値は true 、列が単一または複合主キーに参加している場合にです。 それ以外の場合、その値は false です。
IsAutoIncrement true: 列は、固定インクリメントで新しい行に値を割り当てます。 false: 列は、固定インクリメントで新しい行に値を割り当てません。 この列の既定値は false です。
BaseCatalogName 列を含むデータ ストア内のカタログの名前です。 Null ベースカタログ名を特定できない場合はです。 この列の既定値は、 null 値です。
BaseSchemaName この値は常に Null です。
BaseTableName DataTable の名前。
BaseColumnName 内の列の名前 DataTable
AutoIncrementSeed のプロパティの値 DataTable AutoIncrementSeed
AutoIncrementStep のプロパティの値 DataTable AutoIncrementStep
DefaultValue のプロパティの値 DataColumn DefaultValue
Expression 現在の列が式列で、式で使用されているすべての列が式列を含む同じに属している場合は、式文字列 T:System.Data.DataTable 。それ以外の場合は null
ColumnMapping MappingTypeに関連付けられている値 DataColumn 。 型には、、、、またはのいずれかを指定でき Attribute Element Hidden SimpleContent ます。 既定値は Element です。
BaseTableNamespace のプロパティの値 DataTable Namespace
BaseColumnNamespace のプロパティの値 DataColumn Namespace

適用対象