DataTableReader.GetSchemaTable DataTableReader.GetSchemaTable DataTableReader.GetSchemaTable DataTableReader.GetSchemaTable Method

定義

DataTable の列メタデータを記述する DataTableReader を返します。Returns a DataTable that describes the column metadata of the 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

戻り値

列メタデータを記述する DataTableA DataTable that describes the column metadata.

例外

次のコンソールアプリケーションの例では、指定された列に関するスキーマ情報を取得します。The following console application example retrieves schema information about the specified column. プロシージャ a DataTableReaderと、DataTableReader内の列の序数位置を表す整数を渡します。このプロシージャは、スキーマ情報をコンソールウィンドウに出力します。 DisplaySchemaTableInfoPass the DisplaySchemaTableInfo procedure a DataTableReader and an integer representing the ordinal position of a column within the DataTableReader, and the procedure outputs schema information to the console window.

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 メソッドは、各列に関するメタデータを次の順序で返します。The GetSchemaTable method returns metadata about each column in the following order:

DataReader 列DataReader column 説明Description
ColumnNameColumnName に表示される列の名前DataTableThe name of the column as it appears in the DataTable.
カラムColumnOrdinal 列の序数The ordinal of the column
ColumnSizeColumnSize ColumnSize MaxLength (またMaxLengthは) プロパティを決定できない場合、または関連性がない場合は-1。それ以外の場合は、値を格納している正の整数。DataColumn-1 if the ColumnSize (or MaxLength) property of the DataColumn cannot be determined or is not relevant; otherwise, 0 or a positive integer that contains the MaxLength value.
NumericPrecisionNumericPrecision 列の型が数値型の場合は、列の最大有効桁数になります。If the column type is a numeric type, this is the maximum precision of the column. 列の型が数値データ型でない場合、これは null 値になります。If the column type is not a numeric data type, this is a null value.
NumericScaleNumericScale 列のデータ型にスケールコンポーネントがある場合は、小数点の右側の桁数を返します。If column data type has a scale component, return the number of digits to the right of the decimal point. それ以外の場合は、null 値を返します。Otherwise, return a null value.
DataTypeDataType 列の基になる型。The underlying type of the column.
ProviderTypeProviderType 列のデータ型のインジケーター。The indicator of the column's data type. 列のデータ型が行ごとに異なる場合、この値はObjectになります。If the data type of the column varies from row to row, this value is Object. この列に null 値を含めることはできません。This column cannot contain a null value.
IsLongIsLong true列のデータ型がStringで、そのMaxLengthプロパティが-1 の場合。true if the data type of the column is String and its MaxLength property is -1. それ以外の場合は falseOtherwise, false.
AllowDBNullAllowDBNull true列に対して AllowDbNull 制約が true に設定されている場合は、それ以外falseの場合は。true if the AllowDbNull constraint is set to true for the column; otherwise, false.
IsReadOnlyIsReadOnly true列を変更できない場合はです。それfalse以外の場合は。true if the column cannot be modified; otherwise false.
IsRowVersionIsRowVersion falseすべての列に対して。false, for every column.
IsUniqueIsUnique true :この列では、 DataTable内の2つの行が同じ値を持つことはできません。true: No two rows in the DataTable can have the same value in this column. IsUnique列がそれ自体によってキーを表している場合、またはこの列にのみ適用される UNIQUE 型の制約がある場合、は true であることが保証されます。IsUnique is guaranteed to be true if the column represents a key by itself or if there is a constraint of type UNIQUE that applies only to this column. false:列には、 DataTable内の重複する値を含めることができます。false: The column can contain duplicate values in the DataTable. この列の既定値はfalseです。The default of this column is false.
IsKeyIsKey true:列は、内DataTableの行を一意に識別するために使用される列のセットの1つです。true: The column is one of a set of columns that, taken together, uniquely identify the row in the DataTable. がにIsKey true設定された列のセットでは、 DataTable内の行を一意に識別する必要があります。The set of columns with IsKey set to true must uniquely identify a row in the DataTable. この一連の列が列の最小セットである必要はありません。There is no requirement that this set of columns is a minimal set of columns. この一連の列は、 DataTable主キー、一意の制約、または一意のインデックスから生成されます。This set of columns may be generated from a DataTable primary key, a unique constraint or a unique index. false:列は、行を一意に識別するためには必要ありません。false: The column is not required to uniquely identify the row. この値はtrue 、列が単一または複合主キーに参加している場合にです。This value is true if the column participates in a single or composite primary key. それ以外の場合、 falseその値はです。Otherwise, its value is false.
IsAutoIncrementIsAutoIncrement true:列は、固定インクリメントで新しい行に値を割り当てます。true: The column assigns values to new rows in fixed increments. false :列では、固定インクリメントで新しい行に値が割り当てられません。false: The column does not assign values to new rows in fixed increments. この列の既定値はfalseです。The default of this column is false.
BaseCatalogNameBaseCatalogName 列を含むデータストア内のカタログの名前。The name of the catalog in the data store that contains the column. Nullベースカタログ名を特定できない場合はです。Null if the base catalog name cannot be determined. この列の既定値は、 null値です。The default value for this column is a null value.
BaseSchemaNameBaseSchemaName この値は常Nullにです。This value is always Null.
BaseTableNameBaseTableName DataTable の名前。The name of the DataTable.
BaseColumnNameBaseColumnName 内の列の名前DataTableThe name of the column in the DataTable.
AutoIncrementSeedAutoIncrementSeed DataTableAutoIncrementSeedプロパティの値。The value of the DataTable's AutoIncrementSeed property.
AutoIncrementStepAutoIncrementStep DataTableAutoIncrementStepプロパティの値。The value of the DataTable's AutoIncrementStep property.
DefaultValueDefaultValue DataColumnDefaultValueプロパティの値。The value of the DataColumn's DefaultValue property.
正規表現Expression 現在の列が式列で、式で使用されているすべての列が式列を含むT:System.Data.DataTable同じに属している場合はnull、式文字列。それ以外の場合は。The expression string, if the current column is an expression column and all columns used in the expression belong to the same T:System.Data.DataTable that contains the expression column; otherwise null.
ColumnMappingColumnMapping に関連付けられているMappingType値。 DataColumnThe MappingType value associated with the DataColumn. AttributeにはElement SimpleContent、、、、またはのいずれかを指定できます。 HiddenThe type can be one of Attribute, Element, Hidden, or SimpleContent. 既定値は Element です。The default value is Element.
BaseTableNamespaceBaseTableNamespace DataTableNamespaceプロパティの値。The value of the DataTable's Namespace property.
BaseColumnNamespaceBaseColumnNamespace DataColumnNamespaceプロパティの値。The value of the DataColumn's Namespace property.

適用対象