DbDataAdapter.Fill DbDataAdapter.Fill DbDataAdapter.Fill DbDataAdapter.Fill Method

定義

DataSet または DataTable にデータを読み込みます。Fills a DataSet or a DataTable.

オーバーロード

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

DataSet 名、ソース テーブル名、コマンド文字列、およびコマンド動作を使用して、データ ソース内の列と一致するように、DataSet 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and source table names, command string, and command behavior.

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

DataSet 名および DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet, String, IDataReader, Int32, Int32) Fill(DataSet, String, IDataReader, Int32, Int32) Fill(DataSet, String, IDataReader, Int32, Int32)

DataSetDataTableIDataReader の名前を使用して、データ ソース内の行と一致するように、DataSet 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet, DataTable, and IDataReader names.

Fill(DataSet, Int32, Int32, String) Fill(DataSet, Int32, Int32, String) Fill(DataSet, Int32, Int32, String)

DataSet 名および DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[])

指定したレコード位置で開始し、指定した最大数のレコードを読み込んで、データ ソース内の行と一致するように、DataTable 内の行を追加または更新します。Adds or refreshes rows in a DataTable to match those in the data source starting at the specified record and retrieving up to the specified maximum number of records.

Fill(DataTable) Fill(DataTable) Fill(DataTable)

DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataTable name.

Fill(DataTable, IDataReader) Fill(DataTable, IDataReader) Fill(DataTable, IDataReader)

指定した DataTableIDataReader の名前を使用して、データ ソース内の行と一致するように、DataTable 内の行を追加または更新します。Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable and IDataReader names.

Fill(DataSet, String) Fill(DataSet, String) Fill(DataSet, String)

DataSet 名および DataSet 名を使用して、データ ソース内の列と一致するように DataTable 内の行を追加または更新します。Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet) Fill(DataSet) Fill(DataSet)

DataSet 内の行を追加または更新します。Adds or refreshes rows in the DataSet.

Fill(DataTable, IDbCommand, CommandBehavior) Fill(DataTable, IDbCommand, CommandBehavior) Fill(DataTable, IDbCommand, CommandBehavior)

指定した DataTableDataTable、および IDbCommand を使用して、データ ソース内の行と一致するように、CommandBehavior 内の行を追加または更新します。Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable, IDbCommand and CommandBehavior.

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

DataSet 名、ソース テーブル名、コマンド文字列、およびコマンド動作を使用して、データ ソース内の列と一致するように、DataSet 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and source table names, command string, and command behavior.

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataSet * int * int * string * System.Data.IDbCommand * System.Data.CommandBehavior -> int

パラメーター

dataSet
DataSet DataSet DataSet DataSet

レコードおよび必要に応じてスキーマを格納するための DataSetA DataSet to fill with records and, if necessary, schema.

startRecord
Int32 Int32 Int32 Int32

取得を開始する、0 から始まるレコード番号。The zero-based record number to start with.

maxRecords
Int32 Int32 Int32 Int32

取得するレコードの最大数。The maximum number of records to retrieve.

srcTable
String String String String

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

command
IDbCommand IDbCommand IDbCommand IDbCommand

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

戻り値

DataSet で正常に追加または更新された行数。The number of rows successfully added to or refreshed in the DataSet. これには、行を返さないステートメントの影響を受ける行は含まれません。This does not include rows affected by statements that do not return rows.

例外

ソース テーブルが無効です。The source table is invalid.

startRecord パラメーターが 0 未満です。The startRecord parameter is less than 0.

- または --or- maxRecords パラメーターが 0 未満です。The maxRecords parameter is less than 0.

注釈

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

次に、のDataTable DataSet変換先オブジェクトに行を追加し、オブジェクトDataTableがまだ存在しない場合は作成します。 FillThe Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. オブジェクトをDataTable作成する場合Fill 、操作では通常、列名のメタデータのみが作成されます。When creating DataTable objects, the Fill operation normally creates only column name metadata. ただし、プロパティがMissingSchemaActionAddWithKey設定されている場合は、適切な主キーと制約も作成されます。However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

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.

メソッドFillは、に大文字DataSetと小DataTable文字のみが異なる名前を持つ複数のオブジェクトが含まれるシナリオをサポートします。The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. このような場合Fill 、は大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新しいテーブルを作成します。In such situations, Fill 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.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.  
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".  

Fill呼び出され、にDataSet含まDataTableれる名前が大文字と小文字DataTableのみで異なる場合は、が更新されます。If Fill 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.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.  

Fill 同じDataTableでメソッドを複数回使用できます。You can use the Fill method multiple times on the same DataTable. 主キーが存在する場合、受信した行は、既に存在する一致する行とマージされます。If a primary key exists, incoming rows are merged with matching rows that already exist. 主キーが存在しない場合は、受信したDataTable行がに追加されます。If no primary key exists, incoming rows are appended to the DataTable.

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 重複行が正しく解決されるようにするには、主キーを明示的に定義する必要があります。You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 詳細については、「主キーの定義」を参照してください。For more information, see Defining Primary Keys.

注意

複数の結果を返すバッチ SQL ステートメントを処理する場合、 Fill .NET Framework FillSchemaデータプロバイダーのとの実装では、最初の結果のみのスキーマ情報を取得します。When handling batch SQL statements that return multiple results, the implementation of Fill and FillSchema for a .NET Framework data provider retrieves schema information for only the first result.

注意 (継承者)

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

こちらもご覧ください

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

DataSet 名および DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

protected:
 virtual int Fill(cli::array <System::Data::DataTable ^> ^ dataTables, int startRecord, int maxRecords, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataTable[] dataTables, int startRecord, int maxRecords, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable[] * int * int * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTables As DataTable(), startRecord As Integer, maxRecords As Integer, command As IDbCommand, behavior As CommandBehavior) As Integer

パラメーター

dataTables
DataTable[]

データ ソースから読み込む DataTable オブジェクト。The DataTable objects to fill from the data source.

startRecord
Int32 Int32 Int32 Int32

取得を開始する、0 から始まるレコード番号。The zero-based record number to start with.

maxRecords
Int32 Int32 Int32 Int32

取得するレコードの最大数。The maximum number of records to retrieve.

command
IDbCommand IDbCommand IDbCommand IDbCommand

IDbCommand オブジェクトにデータを読み込むために実行する DataTableThe IDbCommand executed to fill the DataTable objects.

戻り値

データ テーブルで追加または更新された行数。The number of rows added to or refreshed in the data tables.

例外

ソース テーブルが無効です。The source table is invalid.

または-or-

接続が無効です。The connection is invalid.

接続が見つかりませんでした。The connection could not be found.

startRecord パラメーターが 0 未満です。The startRecord parameter is less than 0.

- または --or- maxRecords パラメーターが 0 未満です。The maxRecords parameter is less than 0.

注釈

maxRecords 0 は、開始レコードの後に見つかったすべてのレコードを取得します。A maxRecords value of 0 gets all records found after the start record. maxRecords残りの行の数よりも大きい場合は、残りの行のみが返され、エラーは発行されません。If maxRecords is greater than the number of remaining rows, only the remaining rows are returned and no error is issued.

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

コマンドが行を返さない場合、にDataSetテーブルは追加されませんが、例外は発生しません。If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

の設定DbDataAdapter中にオブジェクトが重複するDataTable列を検出すると、"columnname1"、"columnname2"、"columnname3" などのパターンを使用して、後続の列の名前が生成されます。If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate 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.

指定したクエリで複数の結果が返された場合は、各結果セットが個別のテーブルに配置されます。When the query specified returns multiple results, 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). 行を返さないクエリに対してテーブルが作成されていないため、挿入クエリを処理してから select クエリを実行すると、select クエリに対して作成されたテーブルには "Table" という名前が付けられます。これは最初に作成されたテーブルであるためです。Since no table is created for a query that does not return rows, if you were to process an insert query followed by a select query, the table created for the select query would be named "Table", because it is the first table created. 列名とテーブル名を使用するアプリケーションでは、これらの名前付けパターンとの競合が発生しないようにする必要があります。Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

メソッドFillは、に大文字DataSetと小DataTable文字のみが異なる名前を持つ複数のオブジェクトが含まれるシナリオをサポートします。The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. このような場合Fill 、は大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新しいテーブルを作成します。In such situations, Fill 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.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.  
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".  

Fill呼び出され、にDataSet含まDataTableれる名前が大文字と小文字DataTableのみで異なる場合は、が更新されます。If Fill 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.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.  

データテーブルの読み込み中にエラーまたは例外が発生した場合、エラーが発生する前に追加された行はデータテーブルに残ります。If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. 残りの操作は中止されます。The remainder of the operation is aborted.

DataTableオブジェクトを設定するために使用される SELECT ステートメントでバッチ SQL ステートメントなどの複数の結果が返される場合は、次の点に注意してください。When the SELECT statement used to populate the DataTable objects returns multiple results, such as a batch SQL statement, be aware of the following:

  • バッチ SQL ステートメントから複数の結果を処理するmaxRecords場合、は最初の結果にのみ適用されます。When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. これは、チャプター結果を含む行にも当てはまります (OLE DB の .NET Framework Data Provider)。The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). 最上位レベルの結果はにmaxRecordsよって制限されますが、すべての子行が追加されます。The top level result is limited by maxRecords, but all child rows are added.

  • 結果の1つにエラーが含まれている場合は、後続のすべての結果がスキップされます。If one of the results contains an error, all subsequent results are skipped.

注意

DataSetは、によってmaxRecords示されるレコード数を超える値は含まれません。The DataSet will not contain more than the number of records indicated by maxRecords. ただし、クエリによって生成された結果セット全体がサーバーから返されます。However, the entire resultset generated by the query is still returned from the server.

注意 (継承者)

派生クラスFill(DataSet)でをオーバーライドする場合は、必ず基底クラスのFill(DataSet)メソッドを呼び出してください。When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

こちらもご覧ください

Fill(DataSet, String, IDataReader, Int32, Int32) Fill(DataSet, String, IDataReader, Int32, Int32) Fill(DataSet, String, IDataReader, Int32, Int32)

DataSetDataTableIDataReader の名前を使用して、データ ソース内の行と一致するように、DataSet 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet, DataTable, and IDataReader names.

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable, System::Data::IDataReader ^ dataReader, int startRecord, int maxRecords);
protected virtual int Fill (System.Data.DataSet dataSet, string srcTable, System.Data.IDataReader dataReader, int startRecord, int maxRecords);
override this.Fill : System.Data.DataSet * string * System.Data.IDataReader * int * int -> int

パラメーター

dataSet
DataSet DataSet DataSet DataSet

レコードおよび必要に応じてスキーマを格納するための DataSetA DataSet to fill with records and, if necessary, schema.

srcTable
String String String String

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

dataReader
IDataReader IDataReader IDataReader IDataReader

IDataReader の名前。The name of the IDataReader.

startRecord
Int32 Int32 Int32 Int32

取得を開始する、0 から始まるレコード番号。The zero-based record number to start with.

maxRecords
Int32 Int32 Int32 Int32

取得するレコードの最大数。The maximum number of records to retrieve.

戻り値

DataSet で正常に追加または更新された行数。The number of rows successfully added to or refreshed in the DataSet. これには、行を返さないステートメントの影響を受ける行は含まれません。This does not include rows affected by statements that do not return rows.

Fill(DataSet, Int32, Int32, String) Fill(DataSet, Int32, Int32, String) Fill(DataSet, Int32, Int32, String)

DataSet 名および DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

public:
 int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable);
override this.Fill : System.Data.DataSet * int * int * string -> int

パラメーター

dataSet
DataSet DataSet DataSet DataSet

レコードおよび必要に応じてスキーマを格納するための DataSetA DataSet to fill with records and, if necessary, schema.

startRecord
Int32 Int32 Int32 Int32

取得を開始する、0 から始まるレコード番号。The zero-based record number to start with.

maxRecords
Int32 Int32 Int32 Int32

取得するレコードの最大数。The maximum number of records to retrieve.

srcTable
String String String String

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

戻り値

DataSet で正常に追加または更新された行数。The number of rows successfully added to or refreshed in the DataSet. これには、行を返さないステートメントの影響を受ける行は含まれません。This does not include rows affected by statements that do not return rows.

例外

ソース テーブルが無効です。The source table is invalid.

- または --or-

接続が無効です。The connection is invalid.

接続が見つかりませんでした。The connection could not be found.

startRecord パラメーターが 0 未満です。The startRecord parameter is less than 0.

- または --or- maxRecords パラメーターが 0 未満です。The maxRecords parameter is less than 0.

次の例では、派生クラスOleDbDataAdapterを使用してDataSet 、行10から始まる15行をCategoriesテーブルからに格納します。The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with 15 rows, beginning at row 10, from the Categories table. この例では、 OleDbDataAdapter DataSetとが作成されていることを前提としています。This example assumes that you have created an OleDbDataAdapter and a DataSet.

public void GetRecords() 
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet,9,15,"Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, 9, 15, "Categories")
End Sub

注釈

maxRecords 0 は、開始レコードの後に見つかったすべてのレコードを取得します。A maxRecords value of 0 gets all records found after the start record. maxRecords残りの行の数よりも大きい場合は、残りの行のみが返され、エラーは発行されません。If maxRecords is greater than the number of remaining rows, only the remaining rows are returned, and no error is issued.

対応する select コマンドが複数の結果を返すステートメントでFillある場合maxRecords 、は最初の結果にのみ適用されます。If the corresponding select command is a statement returning multiple results, Fill only applies maxRecords to the first result.

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

コマンドが行を返さない場合、にDataSetテーブルは追加されませんが、例外は発生しません。If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

の設定DbDataAdapter中にオブジェクトが重複するDataTable列を検出すると、"columnname1"、"columnname2"、"columnname3" などのパターンを使用して、後続の列の名前が生成されます。If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate 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.

指定したクエリで複数の結果が返された場合は、各結果セットが個別のテーブルに配置されます。When the query specified returns multiple results, 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). 行を返さないクエリに対してテーブルが作成されていないため、insert クエリを処理してから select クエリを実行すると、select クエリに対して作成されたテーブルには "Table" という名前が付けられます。これは、最初に作成されたテーブルであるためです。Because no table is created for a query that does not return rows, if you process an insert query followed by a select query, the table created for the select query is named "Table", because it is the first table created. 列名とテーブル名を使用するアプリケーションでは、これらの名前付けパターンとの競合が発生しないようにする必要があります。Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

メソッドFillは、に大文字DataSetと小DataTable文字のみが異なる名前を持つ複数のオブジェクトが含まれるシナリオをサポートします。The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. このような場合Fill 、は大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新しいテーブルを作成します。In such situations, Fill 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.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.  
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".  

Fill呼び出され、にDataSet含まDataTableれる名前が大文字と小文字DataTableのみで異なる場合は、が更新されます。If Fill 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.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.  

データテーブルの読み込み中にエラーまたは例外が発生した場合、エラーが発生する前に追加された行はデータテーブルに残ります。If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. 残りの操作は中止されます。The remainder of the operation is aborted.

を設定DataSetするために使用する select ステートメントで、バッチ SQL ステートメントなどの複数の結果が返される場合は、次の点に注意してください。When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, be aware of the following:

  • バッチ SQL ステートメントから複数の結果を処理するmaxRecords場合、は最初の結果にのみ適用されます。When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. これは、チャプター結果を含む行にも当てはまります (OLE DB の .NET Framework Data Provider)。The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). 最上位レベルの結果はにmaxRecordsよって制限されますが、すべての子行が追加されます。The top level result is limited by maxRecords, but all child rows are added.

  • 結果の1つにエラーが含まれている場合は、後続のすべての結果DataSetがスキップされ、には追加されません。If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

後続Fillの呼び出しを使用しての内容をDataSet更新する場合は、次の2つの条件が満たされている必要があります。When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. SQL ステートメントは、 DataSetを設定するために最初に使用したものと一致している必要があります。The SQL statement should match the one initially used to populate the DataSet.

  2. キー列の情報が存在している必要があります。The Key column information must be present.

主キーの情報が存在する場合は、重複する行が調整され、にDataTable対応DataSetするに1回だけ表示されます。If primary key information is present, any duplicate rows will be reconciled and only appear once in the DataTable that corresponds to the DataSet. 主キーの情報はFillSchema、のPrimaryKey DataTableプロパティを指定するか、 MissingSchemaActionプロパティをに設定するAddWithKeyことによって設定できます。Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 重複行が正しく解決されるようにするには、主キーを明示的に定義する必要があります。You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 詳細については、「主キーの定義」を参照してください。For more information, see Defining Primary Keys.

注意

複数の結果を返すバッチ 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.

注意

DataSetは、によってmaxRecords示されるレコード数を超える値は含まれません。The DataSet will not contain more than the number of records indicated by maxRecords. ただし、クエリによって生成された結果セット全体がサーバーから返されます。However, the entire result set generated by the query is still returned from the server.

注意 (継承者)

派生クラスFill(DataSet)でをオーバーライドする場合は、必ず基底クラスのFill(DataSet)メソッドを呼び出してください。When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

こちらもご覧ください

Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[])

指定したレコード位置で開始し、指定した最大数のレコードを読み込んで、データ ソース内の行と一致するように、DataTable 内の行を追加または更新します。Adds or refreshes rows in a DataTable to match those in the data source starting at the specified record and retrieving up to the specified maximum number of records.

public:
 int Fill(int startRecord, int maxRecords, ... cli::array <System::Data::DataTable ^> ^ dataTables);
public int Fill (int startRecord, int maxRecords, params System.Data.DataTable[] dataTables);
override this.Fill : int * int * System.Data.DataTable[] -> int
Public Function Fill (startRecord As Integer, maxRecords As Integer, ParamArray dataTables As DataTable()) As Integer

パラメーター

startRecord
Int32 Int32 Int32 Int32

取得を開始する、0 から始まるレコード番号。The zero-based record number to start with.

maxRecords
Int32 Int32 Int32 Int32

取得するレコードの最大数。The maximum number of records to retrieve.

dataTables
DataTable[]

データ ソースから読み込む DataTable オブジェクト。The DataTable objects to fill from the data source.

戻り値

DataTable で正常に追加または更新された行数。The number of rows successfully added to or refreshed in the DataTable. この値には、行を返さないステートメントの影響を受ける行は含まれません。This value does not include rows affected by statements that do not return rows.

注釈

メソッドFillは、関連付けられているSelectCommandプロパティによって指定された select ステートメントを使用して、データソースから行を取得します。The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はありません。The connection object associated with the SELECT statement must be valid, but it does not need to be open. が呼び出される前にFill接続が閉じられた場合は、データを取得するために開かれた後、閉じられます。If the connection is closed before Fill is called, it is opened to retrieve data, and then it is closed. が呼び出される前にFill接続が開いている場合は、開いたままになります。If the connection is open before Fill is called, it remains open.

次に、のDataTable DataSet変換先オブジェクトに行を追加し、オブジェクトDataTableがまだ存在しない場合は作成します。 FillThe Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. オブジェクトをDataTable作成する場合Fill 、操作では通常、列名のメタデータのみが作成されます。When creating DataTable objects, the Fill operation normally creates only column name metadata. ただし、プロパティがMissingSchemaActionAddWithKey設定されている場合は、適切な主キーと制約も作成されます。However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 重複行が正しく解決されるようにするには、主キーを明示的に定義する必要があります。You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 詳細については、「主キーの定義」を参照してください。For more information, see Defining Primary Keys.

データアダプターがを設定するときに重複するDataTable列を検出すると、"columnname1"、"columnname2"、"columnname3" などのパターンを使用して、後続の列の名前が生成されます。If the data adapter 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.

を設定DataSetするために使用する SELECT ステートメントで、バッチ SQL ステートメントなどの複数の結果が返される場合、結果の1つDataSetにエラーが含まれていると、後続の結果はすべてスキップされ、には追加されません。When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statements, if one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

Fill 同じDataTableでメソッドを複数回使用できます。You can use the Fill method multiple times on the same DataTable. 主キーが存在する場合、受信した行は、既に存在する一致する行とマージされます。If a primary key exists, incoming rows are merged with matching rows that already exist. 主キーが存在しない場合は、受信したDataTable行がに追加されます。If no primary key exists, incoming rows are appended to the 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.

こちらもご覧ください

Fill(DataTable) Fill(DataTable) Fill(DataTable)

DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataTable name.

public:
 int Fill(System::Data::DataTable ^ dataTable);
public int Fill (System.Data.DataTable dataTable);
override this.Fill : System.Data.DataTable -> int

パラメーター

dataTable
DataTable DataTable DataTable DataTable

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

戻り値

DataSet で正常に追加または更新された行数。The number of rows successfully added to or refreshed in the DataSet. これには、行を返さないステートメントの影響を受ける行は含まれません。This does not include rows affected by statements that do not return rows.

例外

ソース テーブルが無効です。The source table is invalid.

注釈

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

次に、のDataTable DataSet変換先オブジェクトに行を追加し、オブジェクトDataTableがまだ存在しない場合は作成します。 FillThe Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. オブジェクトをDataTable作成する場合Fill 、操作では通常、列名のメタデータのみが作成されます。When creating DataTable objects, the Fill operation normally creates only column name metadata. ただし、プロパティがMissingSchemaActionAddWithKey設定されている場合は、適切な主キーと制約も作成されます。However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

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.

パラメーターとしFillてをDataTable受け取るのオーバーロードは、最初の結果のみを取得します。The overload of Fill that takes DataTable as a parameter only obtains the first result. 複数の結果をFill取得するDataSetために、パラメーターとしてを受け取るのオーバーロードを使用します。Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

メソッドFillは、に大文字DataSetと小DataTable文字のみが異なる名前を持つ複数のオブジェクトが含まれるシナリオをサポートします。The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. このような場合Fill 、は大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新しいテーブルを作成します。In such situations, Fill 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.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.  
    adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".  

Fill呼び出され、にDataSet含まDataTableれる名前が大文字と小文字DataTableのみで異なる場合は、が更新されます。If Fill 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.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.  

Fill 同じDataTableでメソッドを複数回使用できます。You can use the Fill method multiple times on the same DataTable. 主キーが存在する場合、受信した行は、既に存在する一致する行とマージされます。If a primary key exists, incoming rows are merged with matching rows that already exist. 主キーが存在しない場合は、受信したDataTable行がに追加されます。If no primary key exists, incoming rows are appended to the DataTable.

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 重複行が正しく解決されるようにするには、主キーを明示的に定義する必要があります。You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 詳細については、「主キーの定義」を参照してください。For more information, see Defining Primary Keys.

注意

複数の結果を返すバッチ SQL ステートメントを処理する場合、 Fill .NET Framework FillSchemaデータプロバイダーのとの実装では、最初の結果のみのスキーマ情報を取得します。When handling batch SQL statements that return multiple results, the implementation of Fill and FillSchema for a .NET Framework data provider retrieves schema information for only the first result.

注意 (継承者)

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

こちらもご覧ください

Fill(DataTable, IDataReader) Fill(DataTable, IDataReader) Fill(DataTable, IDataReader)

指定した DataTableIDataReader の名前を使用して、データ ソース内の行と一致するように、DataTable 内の行を追加または更新します。Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable and IDataReader names.

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDataReader ^ dataReader);
protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDataReader dataReader);
override this.Fill : System.Data.DataTable * System.Data.IDataReader -> int

パラメーター

dataTable
DataTable DataTable DataTable DataTable

レコードおよび必要に応じてスキーマを格納するための DataTableA DataTable to fill with records and, if necessary, schema.

dataReader
IDataReader IDataReader IDataReader IDataReader

IDataReader の名前。The name of the IDataReader.

戻り値

DataTable で正常に追加または更新された行数。The number of rows successfully added to or refreshed in the DataTable. これには、行を返さないステートメントの影響を受ける行は含まれません。This does not include rows affected by statements that do not return rows.

Fill(DataSet, String) Fill(DataSet, String) Fill(DataSet, String)

DataSet 名および DataSet 名を使用して、データ ソース内の列と一致するように DataTable 内の行を追加または更新します。Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

public:
 int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, string srcTable);
override this.Fill : System.Data.DataSet * string -> int

パラメーター

dataSet
DataSet DataSet DataSet DataSet

レコードおよび必要に応じてスキーマを格納するための DataSetA DataSet to fill with records and, if necessary, schema.

srcTable
String String String String

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

戻り値

DataSet で正常に追加または更新された行数。The number of rows successfully added to or refreshed in the DataSet. これには、行を返さないステートメントの影響を受ける行は含まれません。This does not include rows affected by statements that do not return rows.

例外

ソース テーブルが無効です。The source table is invalid.

次の例では、派生クラスOleDbDataAdapterを使用してDataSet 、に categories テーブルの行を格納します。The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with rows from the categories table. この例では、 OleDbDataAdapter DataSetとが作成されていることを前提としています。This example assumes that you have created an OleDbDataAdapter and a DataSet.

public void GetRecords() 
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet, "Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, "Categories")
End Sub

注釈

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

コマンドが行を返さない場合、にテーブルは追加DataSetされず、例外も発生しません。If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

の設定DbDataAdapter中にオブジェクトが重複するDataTable列を検出すると、"columnname1"、"columnname2"、"columnname3" などのパターンを使用して、後続の列の名前が生成されます。If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate 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.

指定したクエリで複数の結果が返された場合は、各結果セットが個別のテーブルに配置されます。When the query specified returns multiple results, 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). 行を返さないクエリに対してテーブルが作成されていないため、挿入クエリを処理してから select クエリを実行すると、select クエリに対して作成されたテーブルには "Table" という名前が付けられます。これは最初に作成されたテーブルであるためです。Since no table is created for a query that does not return rows, if you were to process an insert query followed by a select query, the table created for the select query would be named "Table", because it is the first table created. 列名とテーブル名を使用するアプリケーションでは、これらの名前付けパターンとの競合が発生しないようにする必要があります。Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

メソッドFillは、に大文字DataSetと小DataTable文字のみが異なる名前を持つ複数のオブジェクトが含まれるシナリオをサポートします。The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. このような場合Fill 、は大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新しいテーブルを作成します。In such situations, Fill 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.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.  
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".  

Fill呼び出され、にDataSet含まDataTableれる名前が大文字と小文字DataTableのみで異なる場合は、が更新されます。If Fill 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.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.  

データテーブルの読み込み中にエラーまたは例外が発生した場合、エラーが発生する前に追加された行はデータテーブルに残ります。If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. 残りの操作は中止されます。The remainder of the operation is aborted.

を設定DataSetするために使用する select ステートメントでバッチ SQL ステートメントなどの複数の結果が返される場合は、次の点に注意してください。When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statement, be aware of the following:

  • 結果の1つにエラーが含まれている場合は、後続のすべての結果DataSetがスキップされ、には追加されません。If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

後続Fillの呼び出しを使用しての内容をDataSet更新する場合は、次の2つの条件が満たされている必要があります。When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. SQL ステートメントは、 DataSetを設定するために最初に使用したものと一致している必要があります。The SQL statement should match the one initially used to populate the DataSet.

  2. キー列の情報が存在している必要があります。The Key column information must be present. 主キーの情報が存在する場合は、重複行が調整され、にDataTable対応DataSetするに1回だけ表示されます。If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. 主キーの情報はFillSchema、のPrimaryKey DataTableプロパティを指定するか、 MissingSchemaActionプロパティをに設定するAddWithKeyことによって設定できます。Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 重複行が正しく解決されるようにするには、主キーを明示的に定義する必要があります。You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 詳細については、「主キーの定義」を参照してください。For more information, see Defining Primary Keys.

注意

複数の結果を返すバッチ 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.

注意 (継承者)

派生クラスFill(DataSet)でをオーバーライドする場合は、必ず基底クラスのFill(DataSet)メソッドを呼び出してください。When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

こちらもご覧ください

Fill(DataSet) Fill(DataSet) Fill(DataSet)

DataSet 内の行を追加または更新します。Adds or refreshes rows in the DataSet.

public:
 override int Fill(System::Data::DataSet ^ dataSet);
public override int Fill (System.Data.DataSet dataSet);
override this.Fill : System.Data.DataSet -> int

パラメーター

dataSet
DataSet DataSet DataSet DataSet

レコードおよび必要に応じてスキーマを格納するための DataSetA DataSet to fill with records and, if necessary, schema.

戻り値

DataSet で正常に追加または更新された行数。The number of rows successfully added to or refreshed in the DataSet. これには、行を返さないステートメントの影響を受ける行は含まれません。This does not include rows affected by statements that do not return rows.

実装

注釈

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

データテーブルの読み込み中にエラーまたは例外が発生した場合、エラーが発生する前に追加された行はデータテーブルに残ります。If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. 残りの操作は中止されます。The remainder of the operation is aborted.

コマンドが行を返さない場合、にテーブルは追加DataSetされず、例外も発生しません。If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

の設定DbDataAdapter中にオブジェクトが重複するDataTable列を検出した場合、"columnname1"、"columnname2"、"columnname3" などのパターンを使用して、後続の列の名前が生成されます。If the DbDataAdapter object 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.

指定されたクエリが複数の結果を返す場合、クエリを返す各行の結果セットは別のテーブルに配置されます。When the query specified returns multiple results, the result set for each row returning query 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). 行を返さないクエリに対してテーブルが作成されていないため、insert クエリを処理してから select クエリを実行すると、select クエリに対して作成されたテーブルには、最初に作成されたテーブルであるため、"Table" という名前が付けられます。Because no table is created for a query that does not return rows, if you process an insert query followed by a select query, the table created for the select query is named "Table" because it is the first table created. 列名とテーブル名を使用するアプリケーションでは、これらの名前付けパターンとの競合が発生しないようにする必要があります。Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

を設定DataSetするために使用される SELECT ステートメントが複数の結果 (バッチ SQL ステートメントなど) を返す場合、結果の1つにエラーが含まれていると、後続DataSetの結果はすべてスキップされ、には追加されません。When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, if one of the results contains an error, all subsequent results are skipped and are not added to the DataSet.

後続Fillの呼び出しを使用しての内容をDataSet更新する場合は、次の2つの条件が満たされている必要があります。When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. SQL ステートメントは、 DataSetを設定するために最初に使用したものと一致している必要があります。The SQL statement should match the one initially used to populate the DataSet.

  2. キー列の情報が存在している必要があります。The Key column information must be present.

主キーの情報が存在する場合は、重複行が調整され、にDataTable対応DataSetするに1回だけ表示されます。If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. 主キーの情報はFillSchema、のPrimaryKey DataTableプロパティを指定するか、 MissingSchemaActionプロパティをに設定するAddWithKeyことによって設定できます。Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 重複行が正しく解決されるようにするには、主キーを明示的に定義する必要があります。You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 詳細については、「主キーの定義」を参照してください。For more information, see Defining Primary Keys.

注意

複数の結果を返すバッチ 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.

こちらもご覧ください

Fill(DataTable, IDbCommand, CommandBehavior) Fill(DataTable, IDbCommand, CommandBehavior) Fill(DataTable, IDbCommand, CommandBehavior)

指定した DataTableDataTable、および IDbCommand を使用して、データ ソース内の行と一致するように、CommandBehavior 内の行を追加または更新します。Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable, IDbCommand and CommandBehavior.

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

パラメーター

dataTable
DataTable DataTable DataTable DataTable

レコードおよび必要に応じてスキーマを格納するための DataTableA DataTable to fill with records and, if necessary, schema.

command
IDbCommand IDbCommand IDbCommand IDbCommand

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

戻り値

DataTable で正常に追加または更新された行数。The number of rows successfully added to or refreshed in the DataTable. これには、行を返さないステートメントの影響を受ける行は含まれません。This does not include rows affected by statements that do not return rows.

注釈

メソッドFillは、関連付けられているSelectCommandプロパティによって指定された select ステートメントを使用して、データソースから行を取得します。The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はありません。The connection object associated with the SELECT statement must be valid, but it does not need to be open. が呼び出される前にFill接続が閉じられた場合は、データを取得して閉じたときに、接続が開かれます。If the connection is closed before Fill is called, it is opened to retrieve data and then closed. が呼び出される前にFill接続が開いている場合は、開いたままになります。If the connection is open before Fill is called, it remains open.

次に、内DataTable DataSetの指定した変換先オブジェクトに行が追加され、オブジェクトがまだ存在しない場合は作成されます。DataTable FillThe Fill operation then adds the rows to the specified destination DataTable object in the DataSet, creating the DataTable object if it does not already exist. オブジェクトをDataTable作成する場合、 Fill操作では通常、列名のメタデータのみが作成されます。When creating a DataTable object, the Fill operation normally creates only column name metadata. ただし、プロパティがMissingSchemaActionAddWithKey設定されている場合は、適切な主キーと制約も作成されます。However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

の設定DbDataAdapter中にオブジェクトが重複するDataTable列を検出すると、"columnname1"、"columnname2"、"columnname3" などのパターンを使用して、後続の列の名前が生成されます。If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate 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.

パラメーターとしFillてをDataTable受け取るのオーバーロードは、最初の結果のみを取得します。The overload of Fill that takes DataTable as a parameter only obtains the first result. 複数の結果をFill取得するDataSetために、パラメーターとしてを受け取るのオーバーロードを使用します。Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

Fill 同じDataTableでメソッドを複数回使用できます。You can use the Fill method multiple times on the same DataTable. 主キーが存在する場合、受信した行は、既に存在する一致する行とマージされます。If a primary key exists, incoming rows are merged with matching rows that already exist. 主キーが存在しない場合は、受信したDataTable行がに追加されます。If no primary key exists, incoming rows are appended to the DataTable.

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 重複行が正しく解決されるようにするには、主キーを明示的に定義する必要があります。You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 詳細については、「主キーの定義」を参照してください。For more information, see Defining Primary Keys.

注意

複数の結果を返すバッチ 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.

注意 (継承者)

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

こちらもご覧ください

適用対象