DbDataAdapter.FillSchema DbDataAdapter.FillSchema DbDataAdapter.FillSchema Method

定義

DataTableDataSet に追加し、データ ソース内のスキーマと一致するようにスキーマを設定します。Adds a DataTable to a DataSet and configures the schema to match that in the data source.

オーバーロード

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior) FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior) FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

指定した DataTableDataSet を追加し、指定した SchemaType に基づいて、データ ソース内のスキーマと一致するようにスキーマを設定します。Adds a DataTable to the specified DataSet and configures the schema to match that in the data source based on the specified SchemaType.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

指定した DataTable、コマンド文字列、および SchemaType 値に基づいて、指定した CommandBehavior のスキーマを設定します。Configures the schema of the specified DataTable based on the specified SchemaType, command string, and CommandBehavior values.

FillSchema(DataSet, SchemaType, String) FillSchema(DataSet, SchemaType, String) FillSchema(DataSet, SchemaType, String)

指定した DataTableDataSet を追加し、指定した SchemaType および DataTable に基づいて、データ ソース内のスキーマと一致するようにスキーマを設定します。Adds a DataTable to the specified DataSet and configures the schema to match that in the data source based upon the specified SchemaType and DataTable.

FillSchema(DataTable, SchemaType) FillSchema(DataTable, SchemaType) FillSchema(DataTable, SchemaType)

指定した DataTable に基いて、指定した SchemaType のスキーマを設定します。Configures the schema of the specified DataTable based on the specified SchemaType.

FillSchema(DataSet, SchemaType) FillSchema(DataSet, SchemaType) FillSchema(DataSet, SchemaType)

"Table" という名前の DataTable を指定された DataSet に追加し、指定された SchemaType に基づいて、データ ソースにあるスキーマと一致するようにスキーマを構成します。Adds a DataTable named "Table" to the specified DataSet and configures the schema to match that in the data source based on the specified SchemaType.

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior) FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior) FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

指定した DataTableDataSet を追加し、指定した SchemaType に基づいて、データ ソース内のスキーマと一致するようにスキーマを設定します。Adds a DataTable to the specified DataSet and configures the schema to match that in the data source based on the specified SchemaType.

protected:
 virtual cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::String ^ srcTable, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]

パラメーター

dataSet
DataSet DataSet DataSet

データ ソースからのスキーマを格納する DataSetThe DataSet to be filled with the schema from the data source.

schemaType
SchemaType SchemaType SchemaType

SchemaType 値のいずれか。One of the SchemaType values.

command
IDbCommand IDbCommand IDbCommand

データ ソースから行を取得するために使用する SQL SELECT ステートメント。The SQL SELECT statement used to retrieve rows from the data source.

srcTable
String String String

テーブル マップに使用するソース テーブルの名前。The name of the source table to use for table mapping.

behavior
CommandBehavior CommandBehavior CommandBehavior

CommandBehavior 値のいずれか 1 つ。One of the CommandBehavior values.

戻り値

データ ソースから返されたスキーマ情報が格納された、DataTable オブジェクトの配列。An array of DataTable objects that contain schema information returned from the data source.

注釈

メソッドFillSchemaは、 SelectCommandを使用して、データソースからスキーマを取得します。The FillSchema method retrieves the schema from the data source using the SelectCommand. に関連付けられてSelectCommandいる接続オブジェクトは有効である必要がありますが、開く必要はありません。The connection object associated with the SelectCommand must be valid, but it does not need to be open. が呼び出される前にFillSchema接続が閉じられた場合は、データを取得して閉じた状態で接続が開かれます。If the connection is closed before FillSchema is called, it is opened to retrieve data, then closed. が呼び出される前にFillSchema接続が開いている場合は、開いたままになります。If the connection is open before FillSchema is called, it remains open.

操作FillSchemaは、をDataTable変換先DataSetに追加します。A FillSchema operation adds a DataTable to the destination DataSet. 次にDataColumnCollectionDataTableのに列を追加し、データソースにDataColumn次のプロパティが存在する場合はそれを構成します。It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchemaまた、はPrimaryKeyConstraints次の規則に従ってプロパティとプロパティを構成します。FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • 1つ以上の主キー列がによってSelectCommand返された場合は、の主キー列DataTableとして使用されます。If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • 主キー列が返されず、一意の列がの場合は、一意の列が主キーとして使用されます。の場合は、すべての一意の列が null 値の場合に限ります。If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Null 値を許容UniqueConstraintする列がある場合は、がに追加ConstraintCollectionされPrimaryKeyますが、プロパティは設定されません。If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • 主キー列と一意の列の両方が返された場合、主キー列がの主キー列DataTableとして使用されます。If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

前の規則に従って、主キーと一意ConstraintCollectionの制約がに追加されることに注意してくださいが、その他の制約の種類は追加されません。Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added.

SQL Server テーブルの1つまたは複数の列に一意のクラスター化インデックスが定義されていて、primary key 制約が別の列のセットに対して定義されている場合、クラスター化インデックス内の列の名前が返されます。If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. 主キー列の名前または名前を取得するには、主キーインデックスの名前を指定する SELECT ステートメントでクエリヒントを使用します。To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. クエリヒントの指定の詳細については、「クエリヒント (transact-sql)」を参照してください。For more information about specifying query hints, see Query Hint (Transact-SQL).

DataTableがの設定中に重複する列を** 検出すると、"columnname1"、"columnname2"、"columnname3"などのパターンを使用して、後続の列の名前が生成されIDataAdapterます。****If the IDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. 受信データに名前のない列が含まれている場合DataSetは、"Column1"、"Column2" などのパターンに従ってに配置されます。If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. 複数の結果セットがに追加さDataSetれると、それぞれの結果セットが別のテーブルに配置されます。When multiple result sets are added to the DataSet each result set is placed in a separate table. 追加の結果セットには、指定されたテーブル名に整数値を追加することによって名前が付けられます (たとえば、"Table"、"Table1"、"Table2" など)。Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). 列名とテーブル名を使用するアプリケーションでは、これらの名前付けパターンとの競合が発生しないようにする必要があります。Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

メソッドFillSchemaは、に大文字DataSetと小DataTable文字のみが異なる名前を持つ複数のオブジェクトが含まれるシナリオをサポートします。The FillSchema method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. このような場合FillSchema 、は大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新しいテーブルを作成します。In such situations, FillSchema performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. 次C#のコードは、この動作を示しています。The following C# code illustrates this behavior.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

FillSchema呼び出され、にDataSet含まDataTableれる名前が大文字と小文字DataTableのみで異なる場合は、が更新されます。If FillSchema is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. このシナリオでは、比較で大文字と小文字が区別されます。In this scenario, the comparison is case insensitive. 次C#のコードは、この動作を示しています。The following C# code illustrates this behavior.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

FillSchemaは行を返しません。FillSchema does not return any rows. に行Fillを追加するには、メソッドを使用します。DataTableUse the Fill method to add rows to a DataTable.

注意

複数の結果を返すバッチ SQL ステートメントを処理する場合、 FillSchema OLE DB の .NET Framework Data Provider のの実装では、最初の結果のみのスキーマ情報を取得します。When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 複数の結果のスキーマ情報を取得するFillにはMissingSchemaAction 、をAddWithKeyに設定してを使用します。To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダーは、実行するステートメントに FOR BROWSE 句を追加します。When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. 詳細については、「SET FMTONLY (Transact-SQL)」をご覧ください。For more information, see SET FMTONLY (Transact-SQL).

注意 (継承者)

このFillSchema(DataSet, SchemaType)メソッドの実装は保護されており、.NET Framework データプロバイダーによって使用されるように設計されています。This implementation of the FillSchema(DataSet, SchemaType) method is protected and is designed for use by a .NET Framework data provider.

こちらもご覧ください

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

指定した DataTable、コマンド文字列、および SchemaType 値に基づいて、指定した CommandBehavior のスキーマを設定します。Configures the schema of the specified DataTable based on the specified SchemaType, command string, and CommandBehavior values.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable

パラメーター

dataTable
DataTable DataTable DataTable

データ ソースからのスキーマを格納する DataTableThe DataTable to be filled with the schema from the data source.

schemaType
SchemaType SchemaType SchemaType

SchemaType 値のいずれか 1 つ。One of the SchemaType values.

command
IDbCommand IDbCommand IDbCommand

データ ソースから行を取得するために使用する SQL SELECT ステートメント。The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior CommandBehavior CommandBehavior

CommandBehavior 値のいずれか。One of the CommandBehavior values.

戻り値

データ ソースから返されたスキーマ情報が格納された DataTable オブジェクト。A of DataTable object that contains schema information returned from the data source.

注釈

メソッドFillSchemaは、 SelectCommandを使用して、データソースからスキーマを取得します。The FillSchema method retrieves the schema from the data source using the SelectCommand. に関連付けられてSelectCommandいる接続オブジェクトは有効である必要がありますが、開く必要はありません。The connection object associated with the SelectCommand must be valid, but it does not need to be open. が呼び出される前にFillSchema接続が閉じられた場合は、データを取得して閉じた状態で接続が開かれます。If the connection is closed before FillSchema is called, it is opened to retrieve data, then closed. が呼び出される前にFillSchema接続が開いている場合は、開いたままになります。If the connection is open before FillSchema is called, it remains open.

操作FillSchemaは、をDataTable変換先DataSetに追加します。A FillSchema operation adds a DataTable to the destination DataSet. 次にDataColumnCollectionDataTableのに列を追加し、データソースにDataColumn次のプロパティが存在する場合はそれを構成します。It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchemaまた、はPrimaryKeyConstraints次の規則に従ってプロパティとプロパティを構成します。FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • 1つ以上の主キー列がによってSelectCommand返された場合は、の主キー列DataTableとして使用されます。If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • 主キー列が返されず、一意の列がの場合は、一意の列が主キーとして使用されます。の場合は、すべての一意の列が null 値の場合に限ります。If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Null 値を許容UniqueConstraintする列がある場合は、がに追加ConstraintCollectionされPrimaryKeyますが、プロパティは設定されません。If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • 主キー列と一意の列の両方が返された場合、主キー列がの主キー列DataTableとして使用されます。If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

前の規則に従って、主キーと一意ConstraintCollectionの制約がに追加されることに注意してくださいが、その他の制約の種類は追加されません。Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added.

SQL Server テーブルの1つまたは複数の列に一意のクラスター化インデックスが定義されていて、primary key 制約が別の列のセットに対して定義されている場合、クラスター化インデックス内の列の名前が返されます。If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. 主キー列の名前または名前を取得するには、主キーインデックスの名前を指定する SELECT ステートメントでクエリヒントを使用します。To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. クエリヒントの指定の詳細については、「クエリヒント (transact-sql)」を参照してください。For more information about specifying query hints, see Query Hint (Transact-SQL).

DataTableがの設定中に重複する列を** 検出すると、"columnname1"、"columnname2"、"columnname3"などのパターンを使用して、後続の列の名前が生成されIDataAdapterます。****If the IDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. 受信データに名前のない列が含まれている場合DataSetは、"Column1"、"Column2" などのパターンに従ってに配置されます。If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. 複数の結果セットがに追加さDataSetれると、それぞれの結果セットが別のテーブルに配置されます。When multiple result sets are added to the DataSet each result set is placed in a separate table. 追加の結果セットには、指定されたテーブル名に整数値を追加することによって名前が付けられます (たとえば、"Table"、"Table1"、"Table2" など)。Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). 列名とテーブル名を使用するアプリケーションでは、これらの名前付けパターンとの競合が発生しないようにする必要があります。Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

FillSchemaは行を返しません。FillSchema does not return any rows. に行Fillを追加するには、メソッドを使用します。DataTableUse the Fill method to add rows to a DataTable.

注意

複数の結果を返すバッチ SQL ステートメントを処理する場合、 FillSchema OLE DB の .NET Framework Data Provider のの実装では、最初の結果のみのスキーマ情報を取得します。When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 複数の結果のスキーマ情報を取得するFillにはMissingSchemaAction 、をAddWithKeyに設定してを使用します。To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダーは、実行するステートメントに FOR BROWSE 句を追加します。When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. 詳細については、「SET FMTONLY (Transact-SQL)」をご覧ください。For more information, see SET FMTONLY (Transact-SQL).

注意 (継承者)

このFillSchema(DataSet, SchemaType)メソッドの実装は保護されており、.NET Framework データプロバイダーによって使用されるように設計されています。This implementation of the FillSchema(DataSet, SchemaType) method is protected and is designed for use by a .NET Framework data provider.

こちらもご覧ください

FillSchema(DataSet, SchemaType, String) FillSchema(DataSet, SchemaType, String) FillSchema(DataSet, SchemaType, String)

指定した DataTableDataSet を追加し、指定した SchemaType および DataTable に基づいて、データ ソース内のスキーマと一致するようにスキーマを設定します。Adds a DataTable to the specified DataSet and configures the schema to match that in the data source based upon the specified SchemaType and DataTable.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
public System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]

パラメーター

dataSet
DataSet DataSet DataSet

スキーマを挿入する DataSetA DataSet to insert the schema in.

schemaType
SchemaType SchemaType SchemaType

スキーマを挿入する方法を指定する SchemaType 値の 1 つ。One of the SchemaType values that specify how to insert the schema.

srcTable
String String String

テーブル マップに使用するソース テーブルの名前。The name of the source table to use for table mapping.

戻り値

DataTable に追加された DataSet オブジェクトのコレクションへの参照。A reference to a collection of DataTable objects that were added to the DataSet.

例外

スキーマの取得元のソース テーブルが見つかりませんでした。A source table from which to get the schema could not be found.

次の例では、派生クラスSqlDataAdapterを使用してDataSetDataSetスキーマをに格納し、を返します。The following example uses the derived class, SqlDataAdapter, to fill a DataSet with the schema, and returns a DataSet.

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers");
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers")
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

注釈

このメソッドは、 SelectCommandを使用して、データソースからスキーマ情報を取得します。This method retrieves the schema information from the data source using the SelectCommand.

操作FillSchemaは、をDataTable変換先DataSetに追加します。A FillSchema operation adds a DataTable to the destination DataSet. 次にDataColumnCollectionDataTableのに列を追加し、データソースにDataColumn次のプロパティが存在する場合はそれを構成します。It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchemaまた、はPrimaryKeyConstraints次の規則に従ってプロパティとプロパティを構成します。FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • 1つ以上の主キー列がによってSelectCommand返された場合は、の主キー列DataTableとして使用されます。If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • 主キー列が返されず、一意の列がの場合は、一意の列が主キーとして使用されます。の場合は、すべての一意の列が null 値の場合に限ります。If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Null 値を許容UniqueConstraintする列がある場合は、がに追加ConstraintCollectionされPrimaryKeyますが、プロパティは設定されません。If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • 主キー列と一意の列の両方が返された場合、主キー列がの主キー列DataTableとして使用されます。If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

前の規則に従って、主キーと一意ConstraintCollectionの制約がに追加されることに注意してくださいが、その他の制約の種類は追加されません。Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added.

SQL Server テーブルの1つまたは複数の列に一意のクラスター化インデックスが定義されていて、primary key 制約が別の列のセットに対して定義されている場合、クラスター化インデックス内の列の名前が返されます。If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. 主キー列の名前または名前を取得するには、主キーインデックスの名前を指定する SELECT ステートメントでクエリヒントを使用します。To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. クエリヒントの指定の詳細については、「クエリヒント (transact-sql)」を参照してください。For more information about specifying query hints, see Query Hint (Transact-SQL).

キー列が一致Fillする行を検索して置換するために、で主キー情報が使用されます。Primary key information is used during Fill to find and replace any rows whose key columns match. これが目的の動作でない場合はFill 、スキーマ情報を要求せずにを使用します。If this is not the desired behavior, use Fill without requesting schema information.

DataTableがの設定中に重複する列を** 検出すると、"columnname1"、"columnname2"、"columnname3"などのパターンを使用して、後続の列の名前が生成されDbDataAdapterます。****If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. 受信データに名前のない列が含まれている場合DataSetは、"Column1"、"Column2" などのパターンに従ってに配置されます。If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. 複数の結果セットがに追加さDataSetれると、それぞれの結果セットが別のテーブルに配置されます。When multiple result sets are added to the DataSet each result set is placed in a separate table. 追加の結果セットには、指定されたテーブル名に整数値を追加することによって名前が付けられます (たとえば、"Table"、"Table1"、"Table2" など)。Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). 列名とテーブル名を使用するアプリケーションでは、これらの名前付けパターンとの競合が発生しないようにする必要があります。Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

メソッドFillSchemaは、に大文字DataSetと小DataTable文字のみが異なる名前を持つ複数のオブジェクトが含まれるシナリオをサポートします。The FillSchema method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. このような場合FillSchema 、は大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新しいテーブルを作成します。In such situations, FillSchema performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. 次C#のコードは、この動作を示しています。The following C# code illustrates this behavior.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

FillSchema呼び出され、にDataSet含まDataTableれる名前が大文字と小文字DataTableのみで異なる場合は、が更新されます。If FillSchema is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. このシナリオでは、比較で大文字と小文字が区別されます。In this scenario, the comparison is case insensitive. 次C#のコードは、この動作を示しています。The following C# code illustrates this behavior.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

Select IDbConnectionコマンドに関連付けられたオブジェクトは有効である必要がありますが、を開く必要はありません。The IDbConnection object associated with the select command must be valid, but it does not need to open. が呼び出さIDbConnectionれる前にFillSchemaが閉じられている場合は、データを取得して閉じた状態で、を開きます。If the IDbConnection is closed before FillSchema is called, it is opened to retrieve data, then closed. が呼び出される前にFillSchema接続が開いている場合は、開いたままになります。If the connection is open before FillSchema is called, it is left open.

注意

複数の結果を返すバッチ SQL ステートメントを処理する場合、 FillSchema OLE DB の .NET Framework Data Provider のの実装では、最初の結果のみのスキーマ情報を取得します。When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 複数の結果のスキーマ情報を取得するFillにはMissingSchemaAction 、をAddWithKeyに設定してを使用します。To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダーは、実行するステートメントに FOR BROWSE 句を追加します。When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. 詳細については、「SET FMTONLY (Transact-SQL)」をご覧ください。For more information, see SET FMTONLY (Transact-SQL).

こちらもご覧ください

FillSchema(DataTable, SchemaType) FillSchema(DataTable, SchemaType) FillSchema(DataTable, SchemaType)

指定した DataTable に基いて、指定した SchemaType のスキーマを設定します。Configures the schema of the specified DataTable based on the specified SchemaType.

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
public System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable

パラメーター

dataTable
DataTable DataTable DataTable

データ ソースからのスキーマを格納する DataTableThe DataTable to be filled with the schema from the data source.

schemaType
SchemaType SchemaType SchemaType

SchemaType 値のいずれか 1 つ。One of the SchemaType values.

戻り値

データ ソースから返されたスキーマ情報が格納された DataTableA DataTable that contains schema information returned from the data source.

次の例では、派生クラスSqlDataAdapterを使用してDataSetDataTableスキーマをに格納し、を返します。The following example uses the derived class, SqlDataAdapter, to fill a DataSet with the schema, and returns a DataTable.

public static DataTable GetCustomerData(string dataSetName,
    string connectionString)
{
    DataTable table = new DataTable(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(table, SchemaType.Mapped);
        adapter.Fill(table);
        return table;
    }
}
Private Function GetCustomerData(ByVal dataTableName As String, _
    ByVal connectionString As String) As DataTable

    Dim table As New DataTable(dataTableName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(table, SchemaType.Mapped)
        adapter.Fill(table)
        Return table
    End Using
End Function

注釈

メソッドFillSchemaは、 SelectCommandを使用して、データソースからスキーマを取得します。The FillSchema method retrieves the schema from the data source using the SelectCommand. に関連付けられてSelectCommandいる接続オブジェクトは有効である必要がありますが、開く必要はありません。The connection object associated with the SelectCommand must be valid, but it does not need to be open. が呼び出される前にFillSchema接続が閉じられた場合は、データを取得して閉じた状態で接続が開かれます。If the connection is closed before FillSchema is called, it is opened to retrieve data, then closed. が呼び出される前にFillSchema接続が開いている場合は、開いたままになります。If the connection is open before FillSchema is called, it remains open.

操作FillSchemaはをDataTable返します。A FillSchema operation returns a DataTable. 次にDataColumnCollectionDataTableのに列を追加し、データソースにDataColumn次のプロパティが存在する場合はそれを構成します。It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchemaまた、はPrimaryKeyConstraints次の規則に従ってプロパティとプロパティを構成します。FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • がにDataTable対して既に定義されている場合、またはPrimaryKeyにデータが含まれている場合は、プロパティは設定されません。 DataTable PrimaryKeyIf a PrimaryKey has already been defined for the DataTable, or the DataTable contains data, the PrimaryKey property will not be set.

  • 1つ以上の主キー列がによってSelectCommand返された場合は、の主キー列DataTableとして使用されます。If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • 主キー列が返されず、一意の列がの場合は、一意の列が主キーとして使用されます。の場合は、すべての一意の列が null 値の場合に限ります。If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Null 値を許容UniqueConstraintする列がある場合は、がに追加ConstraintCollectionされPrimaryKeyますが、プロパティは設定されません。If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • 主キー列と一意の列の両方が返された場合、主キー列がの主キー列DataTableとして使用されます。If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

前の規則に従って、主キーと一意ConstraintCollectionの制約がに追加されることに注意してくださいが、その他の制約の種類は追加されません。Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added. このプロセスでは、サーバーへのラウンドトリップがいくつか必要になる場合があります。This process may require several round-trips to the server.

SQL Server テーブルの1つまたは複数の列に一意のクラスター化インデックスが定義されていて、primary key 制約が別の列のセットに対して定義されている場合、クラスター化インデックス内の列の名前が返されます。If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. 主キー列の名前または名前を取得するには、主キーインデックスの名前を指定する SELECT ステートメントでクエリヒントを使用します。To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. クエリヒントの指定の詳細については、「クエリヒント (transact-sql)」を参照してください。For more information about specifying query hints, see Query Hint (Transact-SQL).

DataTableがの設定中に重複する列を** 検出すると、"columnname1"、"columnname2"、"columnname3"などのパターンを使用して、後続の列の名前が生成されDbDataAdapterます。****If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. 受信データに名前のない列が含まれている場合DataSetは、"Column1"、"Column2" などのパターンに従ってに配置されます。If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. 複数の結果セットがに追加さDataSetれると、それぞれの結果セットが別のテーブルに配置されます。When multiple result sets are added to the DataSet each result set is placed in a separate table. 追加の結果セットには、指定されたテーブル名に整数値を追加することによって名前が付けられます (たとえば、"Table"、"Table1"、"Table2" など)。Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). 列名とテーブル名を使用するアプリケーションでは、これらの名前付けパターンとの競合が発生しないようにする必要があります。Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

FillSchemaは行を返しません。FillSchema does not return any rows. に行Fillを追加するには、メソッドを使用します。DataTableUse the Fill method to add rows to a DataTable.

注意

複数の結果を返すバッチ SQL ステートメントを処理する場合、 FillSchema OLE DB の .NET Framework Data Provider のの実装では、最初の結果のみのスキーマ情報を取得します。When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 複数の結果のスキーマ情報を取得するFillにはMissingSchemaAction 、をAddWithKeyに設定してを使用します。To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダーは、実行するステートメントに FOR BROWSE 句を追加します。When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. 詳細については、「SET FMTONLY (Transact-SQL)」をご覧ください。For more information, see SET FMTONLY (Transact-SQL).

こちらもご覧ください

FillSchema(DataSet, SchemaType) FillSchema(DataSet, SchemaType) FillSchema(DataSet, SchemaType)

"Table" という名前の DataTable を指定された DataSet に追加し、指定された SchemaType に基づいて、データ ソースにあるスキーマと一致するようにスキーマを構成します。Adds a DataTable named "Table" to the specified DataSet and configures the schema to match that in the data source based on the specified SchemaType.

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
public override System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]

パラメーター

dataSet
DataSet DataSet DataSet

スキーマを挿入する DataSetA DataSet to insert the schema in.

schemaType
SchemaType SchemaType SchemaType

スキーマを挿入する方法を指定する SchemaType 値の 1 つ。One of the SchemaType values that specify how to insert the schema.

戻り値

DataTable に追加された DataSet オブジェクトのコレクションへの参照。A reference to a collection of DataTable objects that were added to the DataSet.

実装

次の例では、派生クラスSqlDataAdapterを使用してDataSetDataSetスキーマをに格納し、を返します。The following example uses the derived class, SqlDataAdapter, to fill a DataSet with the schema, and returns a DataSet.

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Mapped);
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Mapped)
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

注釈

このメソッドは、 SelectCommandを使用して、データソースからスキーマ情報を取得します。This method retrieves the schema information from the data source using the SelectCommand.

操作FillSchemaは、をDataTable変換先DataSetに追加します。A FillSchema operation adds a DataTable to the destination DataSet. 次にDataColumnCollectionDataTableのに列を追加し、データソースにDataColumn次のプロパティが存在する場合はそれを構成します。It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchemaまた、はPrimaryKeyConstraints次の規則に従ってプロパティとプロパティを構成します。FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • 1つ以上の主キー列がによってSelectCommand返された場合は、の主キー列DataTableとして使用されます。If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • 主キー列が返されず、一意の列がの場合は、一意の列が主キーとして使用されます。の場合は、すべての一意の列が null 値の場合に限ります。If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Null 値を許容UniqueConstraintする列がある場合は、がに追加ConstraintCollectionされPrimaryKeyますが、プロパティは設定されません。If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • 主キー列と一意の列の両方が返された場合、主キー列がの主キー列DataTableとして使用されます。If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

前の規則に従って、主キーと一意ConstraintCollectionの制約がに追加されることに注意してくださいが、その他の制約の種類は追加されません。Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added.

SQL Server テーブルの1つまたは複数の列に一意のクラスター化インデックスが定義されていて、primary key 制約が別の列のセットに対して定義されている場合、クラスター化インデックス内の列の名前が返されます。If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. 主キー列の名前または名前を取得するには、主キーインデックスの名前を指定する SELECT ステートメントでクエリヒントを使用します。To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. クエリヒントの指定の詳細については、「クエリヒント (transact-sql)」を参照してください。For more information about specifying query hints, see Query Hint (Transact-SQL).

キー列が一致Fillする行を検索して置換するために、で主キー情報が使用されます。Primary key information is used during Fill to find and replace any rows whose key columns match. これが目的の動作でない場合はFill 、スキーマ情報を要求せずにを使用します。If this is not the desired behavior, use Fill without requesting schema information.

DataTableがの設定中に重複する列を** 検出すると、"columnname1"、"columnname2"、"columnname3"などのパターンを使用して、後続の列の名前が生成されIDataAdapterます。****If the IDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. 受信データに名前のない列が含まれている場合DataSetは、"Column1"、"Column2" などのパターンに従ってに配置されます。If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. 複数の結果セットがに追加さDataSetれると、それぞれの結果セットが別のテーブルに配置されます。When multiple result sets are added to the DataSet each result set is placed in a separate table. 追加の結果セットには、指定されたテーブル名に整数値を追加することによって名前が付けられます (たとえば、"Table"、"Table1"、"Table2" など)。Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). 列名とテーブル名を使用するアプリケーションでは、これらの名前付けパターンとの競合が発生しないようにする必要があります。Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Select IDbConnectionコマンドに関連付けられたオブジェクトは有効である必要がありますが、を開く必要はありません。The IDbConnection object associated with the select command must be valid, but it does not need to open. が呼び出さIDbConnectionれる前にFillSchemaが閉じられている場合は、データを取得して閉じた状態で、を開きます。If the IDbConnection is closed before FillSchema is called, it is opened to retrieve data, then closed. が呼び出される前にFillSchema接続が開いている場合は、開いたままになります。If the connection is open before FillSchema is called, it is left open.

注意

複数の結果を返すバッチ SQL ステートメントを処理する場合、 FillSchema OLE DB の .NET Framework Data Provider のの実装では、最初の結果のみのスキーマ情報を取得します。When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 複数の結果のスキーマ情報を取得するFillにはMissingSchemaAction 、をAddWithKeyに設定してを使用します。To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダーは、実行するステートメントに FOR BROWSE 句を追加します。When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. 詳細については、「SET FMTONLY (Transact-SQL)」をご覧ください。For more information, see SET FMTONLY (Transact-SQL).

こちらもご覧ください

適用対象