DbDataAdapter.Fill メソッド

定義

DataSet または DataTable にデータを読み込みます。

オーバーロード

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

DataSet 名、ソース テーブル名、コマンド文字列、およびコマンド動作を使用して、データ ソース内の列と一致するように、DataSet 内の指定した範囲の行を追加または更新します。

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

DataSet 名および DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。

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

DataSetDataTableIDataReader の名前を使用して、データ ソース内の行と一致するように、DataSet 内の指定した範囲の行を追加または更新します。

Fill(DataSet, Int32, Int32, String)

DataSet 名および DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。

Fill(Int32, Int32, DataTable[])

1 つ以上の オブジェクトの行を追加または更新して、指定したレコードから始まるデータ ソース内の行と一致し、指定した最大レコード数まで DataTable 取得します。

Fill(DataTable)

DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。

Fill(DataTable, IDataReader)

指定した DataTableIDataReader の名前を使用して、データ ソース内の行と一致するように、DataTable 内の行を追加または更新します。

Fill(DataSet, String)

DataSet 名および DataSet 名を使用して、データ ソース内の列と一致するように DataTable 内の行を追加または更新します。

Fill(DataSet)

DataSet 内の行を追加または更新します。

Fill(DataTable, IDbCommand, CommandBehavior)

指定した DataTableDataTable、および IDbCommand を使用して、データ ソース内の行と一致するように、CommandBehavior 内の行を追加または更新します。

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

DataSet 名、ソース テーブル名、コマンド文字列、およびコマンド動作を使用して、データ ソース内の列と一致するように、DataSet 内の指定した範囲の行を追加または更新します。

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
Protected Overridable Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String, command As IDbCommand, behavior As CommandBehavior) As Integer

パラメーター

dataSet
DataSet

レコードおよび必要に応じてスキーマを格納するための DataSet

startRecord
Int32

取得を開始する、0 から始まるレコード番号。

maxRecords
Int32

取得するレコードの最大数。 開始レコードの後のすべてのレコードを取得するには、0 を指定します。

srcTable
String

テーブル マップに使用するソース テーブルの名前。

command
IDbCommand

データ ソースから行を取得するために使用する SQL SELECT ステートメント。

behavior
CommandBehavior

CommandBehavior 値のいずれか 1 つ。

戻り値

Int32

DataSet で正常に追加または更新された行数。 これには、行を返さないステートメントの影響を受ける行は含まれません。

例外

ソース テーブルが無効です。

startRecord パラメーターが 0 未満です。

または maxRecords パラメーターが 0 未満です。

注釈

maxRecords 0 は、開始レコードの後に見つかったすべてのレコードを取得します。 が残りの行数を超える場合は、残りの行だけが返され maxRecords 、エラーは発行されません。

メソッド Fill は、関連付けられたプロパティで指定された SELECT ステートメントを使用して、データ ソースから行を取得 SelectCommand します。 SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はない必要があります。 が呼び出される前に接続が閉じている場合は、データを取得するために開き Fill 、閉じられます。 が呼び出される前に接続 Fill が開いている場合は、開いたままです。

その Fill 後、この操作により、 内のコピー先オブジェクトに行が追加されます。オブジェクト DataTable DataSet が存在 DataTable しない場合は作成されます。 オブジェクトを DataTable 作成する場合、 Fill 通常、この操作では列名のメタデータだけが作成されます。 ただし、 プロパティが MissingSchemaAction に設定されている場合 AddWithKey は、適切な主キーと制約も作成されます。

の設定中に 重複する列が検出された場合は DbDataAdapter DataTable 、"columnname 1"、"columnname 2"、"columnname 3"というパターンを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は DataSet 、"Column1"、"Column2" というパターンに従って に配置されます。 複数の結果セットが各結果セットに DataSet 追加される場合、別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("Table"、"Table1"、"Table2" など) を追加することで名前が付けられます。 アプリで列名とテーブル名を使用する場合は、これらの名前付けパターンと競合が発生しなかからずにしてください。

メソッド Fill は、 に、大文字 DataSet と小文字だけが異なる複数 DataTable のオブジェクトを含むシナリオをサポートしています。 このような場合、 では、大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新 Fill しいテーブルを作成します。 次の C# コードは、この動作を示しています。

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".  

が呼び出され、 に、大文字と小文字だけが異なる名前のが 1 つしか含まれている場合 Fill DataSet DataTableDataTable 、更新されます。 このシナリオでは、比較では大文字と小文字が区別されません。 次の C# コードは、この動作を示しています。

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 。 主キーが存在する場合、受信行は、既に存在する一致する行とマージされます。 主キーが存在しない場合は、受信行が に追加されます DataTable

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。

注意

複数の結果SQLするバッチ 処理ステートメントを処理する場合、.NET Framework データ プロバイダーの および の実装では、最初の結果についてのみスキーマ情報 Fill FillSchema が取得されます。

注意 (継承者)

メソッドのこのオーバーロードは保護され、データ プロバイダーで使用 Fill(DataSet) .NET Framework設計されています。

こちらもご覧ください

適用対象

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

DataSet 名および DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。

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 オブジェクト。

startRecord
Int32

取得を開始する、0 から始まるレコード番号。

maxRecords
Int32

取得するレコードの最大数。 開始レコードの後にあるすべてのレコードを取得するには、0を指定します。

command
IDbCommand

IDbCommand オブジェクトにデータを読み込むために実行する DataTable

behavior
CommandBehavior

CommandBehavior 値のいずれか 1 つ。

戻り値

Int32

データ テーブルで追加または更新された行数。

例外

DataSet が無効です。

ソース テーブルが無効です。

または

接続が無効です。

接続が見つかりませんでした。

startRecord パラメーターが 0 未満です。

または maxRecords パラメーターが 0 未満です。

注釈

maxRecords値0は、開始レコードの後に見つかったすべてのレコードを取得します。 maxRecordsが残りの行の数よりも大きい場合は、残りの行のみが返され、エラーは発行されません。

メソッドは、 Fill SELECT ステートメントを使用してデータソースからデータを取得します。 IDbConnectionSELECT ステートメントに関連付けられたオブジェクトは有効である必要がありますが、開く必要はありません。 IDbConnectionが呼び出される前にが閉じられている場合は、データを取得して閉じた状態で、を Fill 開きます。 が呼び出される前に接続が開いている場合は Fill 、開いたままになります。

コマンドが行を返さない場合、にテーブルは追加されませんが、 DataSet 例外は発生しません。

の設定 DbDataAdapter 中にオブジェクトが重複する列を検出すると、 DataTable "columnname 1"、"columnname 2"、"columnname 3" などのパターンを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は、 DataSet "Column1"、"Column2" などのパターンに従ってに配置されます。

指定したクエリで複数の結果が返された場合は、各結果セットが個別のテーブルに配置されます。 追加の結果セットには、指定されたテーブル名に整数値を追加することによって名前が付けられます (たとえば、"Table"、"Table1"、"Table2" など)。 行を返さないクエリに対してテーブルが作成されていないため、挿入クエリを処理してから select クエリを実行すると、select クエリに対して作成されたテーブルには "Table" という名前が付けられます。これは最初に作成されたテーブルであるためです。 アプリで列名とテーブル名を使用する場合は、これらの名前付けパターンと競合しないようにしてください。

Fillメソッドは、に DataSet DataTable 大文字と小文字のみが異なる名前を持つ複数のオブジェクトが含まれるシナリオをサポートします。 このような場合、は Fill 大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新しいテーブルを作成します。 次の C# コードは、この動作を示しています。

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 更新されます。 このシナリオでは、比較で大文字と小文字が区別されます。 次の C# コードは、この動作を示しています。

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.  

データテーブルの読み込み中にエラーまたは例外が発生した場合、エラーが発生する前に追加された行はデータテーブルに残ります。 残りの操作は中止されます。

オブジェクトを設定するために使用される SELECT ステートメントで DataTable バッチ SQL ステートメントなどの複数の結果が返される場合は、次の点に注意してください。

  • バッチ SQL ステートメントから複数の結果を処理する場合、は maxRecords 最初の結果にのみ適用されます。 これは、チャプター結果を含む行にも当てはまります (OLE DB の .NET Framework Data Provider)。 最上位レベルの結果はによって制限され maxRecords ますが、すべての子行が追加されます。

  • 結果の1つにエラーが含まれている場合は、後続のすべての結果がスキップされます。

注意

DataSet は、によって示されるレコード数を超える値は含まれません maxRecords 。 ただし、クエリによって生成された結果セット全体がサーバーから返されます。

注意 (継承者)

派生クラスでをオーバーライドする場合は Fill(DataSet) 、必ず基底クラスのメソッドを呼び出してください Fill(DataSet)

こちらもご覧ください

適用対象

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

DataSetDataTableIDataReader の名前を使用して、データ ソース内の行と一致するように、DataSet 内の指定した範囲の行を追加または更新します。

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
Protected Overridable Function Fill (dataSet As DataSet, srcTable As String, dataReader As IDataReader, startRecord As Integer, maxRecords As Integer) As Integer

パラメーター

dataSet
DataSet

レコードおよび必要に応じてスキーマを格納するための DataSet

srcTable
String

テーブル マップに使用する DataTable の名前。

dataReader
IDataReader

IDataReader の名前。

startRecord
Int32

取得を開始する、0 から始まるレコード番号。

maxRecords
Int32

取得するレコードの最大数。 開始レコードの後にあるすべてのレコードを取得するには、0を指定します。

戻り値

Int32

DataSet で正常に追加または更新された行数。 これには、行を返さないステートメントの影響を受ける行は含まれません。

例外

startRecord が 0 未満です。

または

maxRecords が 0 未満です。

注釈

maxRecords値0は、開始レコードの後に見つかったすべてのレコードを取得します。 maxRecordsが残りの行の数よりも大きい場合は、残りの行のみが返され、エラーは発行されません。

適用対象

Fill(DataSet, Int32, Int32, String)

DataSet 名および DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。

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
Public Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String) As Integer

パラメーター

dataSet
DataSet

レコードおよび必要に応じてスキーマを格納するための DataSet

startRecord
Int32

取得を開始する、0 から始まるレコード番号。

maxRecords
Int32

取得するレコードの最大数。 開始レコードの後のすべてのレコードを取得するには、0 を指定します。

srcTable
String

テーブル マップに使用するソース テーブルの名前。

戻り値

Int32

DataSet で正常に追加または更新された行数。 これには、行を返さないステートメントの影響を受ける行は含まれません。

例外

DataSet が無効です。

ソース テーブルが無効です。

または

接続が無効です。

接続が見つかりませんでした。

startRecord パラメーターが 0 未満です。

または maxRecords パラメーターが 0 未満です。

次の例では、派生クラスを使用して、 OleDbDataAdapter DataSet 行10から始まる15行を Categories テーブルからに格納します。 この例では、とが作成されていることを前提としてい OleDbDataAdapter 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 は、開始レコードの後に見つかったすべてのレコードを取得します。 が残りの行数を超える場合は、残りの行だけが返され、 maxRecords エラーは発行されません。

対応する select コマンドが複数の結果を返すステートメントである場合は、最初 FillmaxRecords 結果にのみ適用されます。

メソッド Fill は、SELECT ステートメントを使用してデータ ソースからデータを取得します。 IDbConnectionSELECT ステートメントに関連付けられているオブジェクトは有効である必要がありますが、開く必要はない必要があります。 が呼び出される前に を閉じた場合は、データを取得するために開いて IDbConnection Fill から閉じられます。 が呼び出される前に接続 Fill が開いている場合は、開いたままです。

コマンドから行が返されない場合、 にテーブルは追加されませんが DataSet 、例外は発生しません。

の設定中にオブジェクトで重複する列が検出された場合は DbDataAdapter DataTable 、"columnname 1"、"columnname 2"、"columnname 3"というパターンを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は DataSet 、"Column1"、"Column2" というパターンに従って に配置されます。

指定したクエリが複数の結果を返す場合、各結果セットは個別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("Table"、"Table1"、"Table2" など) を追加することで名前が付けられます。 行を返すクエリに対してテーブルが作成されないので、挿入クエリの後に選択クエリを処理すると、選択クエリに対して作成されたテーブルの名前は "Table" になります。これは、最初に作成されたテーブルなのでです。 アプリで列名とテーブル名を使用する場合は、これらの名前付けパターンと競合が発生しなかからずにしてください。

Fillメソッドは、に DataSet DataTable 大文字と小文字のみが異なる名前を持つ複数のオブジェクトが含まれるシナリオをサポートします。 このような場合、は Fill 大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新しいテーブルを作成します。 次の C# コードは、この動作を示しています。

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 更新されます。 このシナリオでは、比較で大文字と小文字が区別されます。 次の C# コードは、この動作を示しています。

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.  

データテーブルの読み込み中にエラーまたは例外が発生した場合、エラーが発生する前に追加された行はデータテーブルに残ります。 残りの操作は中止されます。

を設定するために使用する select ステートメントで、 DataSet バッチ SQL ステートメントなどの複数の結果が返される場合は、次の点に注意してください。

  • バッチ SQL ステートメントから複数の結果を処理する場合、は maxRecords 最初の結果にのみ適用されます。 これは、チャプター結果を含む行にも当てはまります (OLE DB の .NET Framework Data Provider)。 最上位レベルの結果はによって制限され maxRecords ますが、すべての子行が追加されます。

  • 結果の1つにエラーが含まれている場合は、後続のすべての結果がスキップされ、には追加されません DataSet

後続の呼び出しを使用しての内容を更新する場合は Fill DataSet 、次の2つの条件が満たされている必要があります。

  1. SQL ステートメントは、を設定するために最初に使用したものと一致している必要があり DataSet ます。

  2. キー 列の情報が存在している必要があります。

主キーの情報が存在する場合は、重複する行が調整され、に対応するに1回だけ表示され DataTable DataSet ます。 主キーの情報は、 FillSchema のプロパティを指定する PrimaryKey か、 DataTable MissingSchemaAction プロパティをに設定することによって設定でき AddWithKey ます。

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。 重複行が正しく解決されるようにするには、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。

注意

複数の結果を返すバッチ SQL ステートメントを処理する場合、OLE DB の .NET Framework Data Provider のの実装では、 FillSchema 最初の結果のみのスキーマ情報を取得します。 複数の結果のスキーマ情報を取得するに Fill は、 MissingSchemaAction をに設定してを使用し AddWithKey ます。

注意

DataSet は、によって示されるレコード数を超える値は含まれません maxRecords 。 ただし、クエリによって生成された結果セット全体がサーバーから返されます。

注意 (継承者)

派生クラスでをオーバーライドする場合は Fill(DataSet) 、必ず基底クラスのメソッドを呼び出してください Fill(DataSet)

こちらもご覧ください

適用対象

Fill(Int32, Int32, DataTable[])

1 つ以上の オブジェクトの行を追加または更新して、指定したレコードから始まるデータ ソース内の行と一致し、指定した最大レコード数まで DataTable 取得します。

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

取得を開始する、0 から始まるレコード番号。

maxRecords
Int32

取得するレコードの最大数。 開始レコードの後のすべてのレコードを取得するには、0 を指定します。

dataTables
DataTable[]

データ ソースから読み込む DataTable オブジェクト。

戻り値

Int32

オブジェクトに正常に追加または更新された行の DataTable 数。 この値には、行を返さないステートメントの影響を受ける行は含まれません。

例外

dataTablesnull または空の配列です。

startRecord が 0 未満です。

または

maxRecords が 0 未満です。

注釈

maxRecords 0 は、開始レコードの後に見つかったすべてのレコードを取得します。 が残りの行数を超える場合は、残りの行だけが返され、 maxRecords エラーは発行されません。

メソッド Fill は、関連付けられたプロパティで指定された SELECT ステートメントを使用して、データ ソースから行を取得 SelectCommand します。 SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はない必要があります。 が呼び出される前に接続が閉じている場合は、データを取得するために開き Fill 、閉じられます。 が呼び出される前に接続 Fill が開いている場合は、開いたままです。

その Fill 後、この操作により、 内のコピー先オブジェクトに行が追加されます。オブジェクト DataTable DataSet が存在 DataTable しない場合は作成されます。 オブジェクトを DataTable 作成する場合、 Fill 通常、この操作では列名のメタデータだけが作成されます。 ただし、 プロパティが MissingSchemaAction に設定されている場合 AddWithKey は、適切な主キーと制約も作成されます。

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。

データ アダプターでは、 の設定中に重複する列が検出された場合 DataTable 、"columnname1"、"columnname2"、"columnname3" というパターンを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は DataSet 、"Column1"、"Column2" というパターンに従って に配置されます。 に複数の結果セットを追加すると DataSet 、各結果セットは個別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("Table"、"Table1"、"Table2" など) を追加することで名前が付けられます。 アプリで列名とテーブル名を使用する場合は、これらの名前付けパターンと競合が発生しなかからずにしてください。

を設定するために使用する SELECT ステートメントがバッチ SQL ステートメントなど、複数の結果を返す場合、結果の 1 つにエラーが含まれている場合、後続のすべての結果はスキップされ、 に追加されません DataSet DataSet

同じ で メソッド Fill を複数回使用できます DataTable 。 主キーが存在する場合、受信行は、既に存在する一致する行とマージされます。 主キーが存在しない場合は、受信行が に追加されます DataTable

注意

複数の結果SQL返すバッチ ステートメントを処理する場合、OLE DB の .NET Framework Data Provider の実装では、最初の結果についてのみスキーマ情報 FillSchema が取得されます。 複数の結果のスキーマ情報を取得するには、 を Fill に設定して MissingSchemaAction を使用します AddWithKey

こちらもご覧ください

適用対象

Fill(DataTable)

DataSet 名を使用して、データ ソース内の行と一致するように、DataTable 内の指定した範囲の行を追加または更新します。

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

パラメーター

dataTable
DataTable

テーブル マップに使用する DataTable の名前。

戻り値

Int32

DataSet で正常に追加または更新された行数。 これには、行を返さないステートメントの影響を受ける行は含まれません。

例外

ソース テーブルが無効です。

注釈

メソッド Fill は、関連付けられたプロパティで指定された SELECT ステートメントを使用して、データ ソースから行を取得 SelectCommand します。 SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はない必要があります。 が呼び出される前に接続が閉じている場合は、データを取得するために開き Fill 、閉じられます。 が呼び出される前に接続 Fill が開いている場合は、開いたままです。

その Fill 後、この操作により、 内のコピー先オブジェクトに行が追加されます。オブジェクト DataTable DataSet が存在 DataTable しない場合は作成されます。 オブジェクトを DataTable 作成する場合、 Fill 通常、この操作では列名のメタデータだけが作成されます。 ただし、 プロパティが MissingSchemaAction に設定されている場合 AddWithKey は、適切な主キーと制約も作成されます。

の設定中に 重複する列が検出された場合は DbDataAdapter DataTable 、"columnname 1"、"columnname 2"、"columnname 3"というパターンを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は DataSet 、"Column1"、"Column2" というパターンに従って に配置されます。 複数の結果セットが各結果セットに DataSet 追加される場合、別のテーブルに配置されます。

パラメーターとして を Fill 受け DataTable 取る のオーバーロードは、最初の結果のみを取得します。 パラメーターとして を受け Fill 取る DataSet のオーバーロードを使用して、複数の結果を取得します。

メソッド Fill は、 に、大文字 DataSet と小文字だけが異なる複数 DataTable のオブジェクトを含むシナリオをサポートしています。 このような場合、 では、大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新 Fill しいテーブルを作成します。 次の C# コードは、この動作を示しています。

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".  

が呼び出され、 に、大文字と小文字だけが異なる名前のが 1 つしか含まれている場合 Fill DataSet DataTableDataTable 、更新されます。 このシナリオでは、比較では大文字と小文字が区別されません。 次の C# コードは、この動作を示しています。

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 。 主キーが存在する場合、受信行は、既に存在する一致する行とマージされます。 主キーが存在しない場合は、受信行が に追加されます DataTable

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。

注意

複数の結果SQLを返すバッチ ステートメントを処理する場合、.NET Framework データ プロバイダーの と の実装では、最初の結果についてのみスキーマ情報 Fill FillSchema が取得されます。

注意 (継承者)

メソッドのこのオーバーロードは保護され、データ プロバイダーで使用 Fill(DataSet) .NET Framework設計されています。

こちらもご覧ください

適用対象

Fill(DataTable, IDataReader)

指定した DataTableIDataReader の名前を使用して、データ ソース内の行と一致するように、DataTable 内の行を追加または更新します。

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
Protected Overridable Function Fill (dataTable As DataTable, dataReader As IDataReader) As Integer

パラメーター

dataTable
DataTable

レコードおよび必要に応じてスキーマを格納するための DataTable

dataReader
IDataReader

IDataReader の名前。

戻り値

Int32

DataTable で正常に追加または更新された行数。 これには、行を返さないステートメントの影響を受ける行は含まれません。

適用対象

Fill(DataSet, String)

DataSet 名および DataSet 名を使用して、データ ソース内の列と一致するように DataTable 内の行を追加または更新します。

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
Public Function Fill (dataSet As DataSet, srcTable As String) As Integer

パラメーター

dataSet
DataSet

レコードおよび必要に応じてスキーマを格納するための DataSet

srcTable
String

テーブル マップに使用するソース テーブルの名前。

戻り値

Int32

DataSet で正常に追加または更新された行数。 これには、行を返さないステートメントの影響を受ける行は含まれません。

例外

ソース テーブルが無効です。

次の例では、派生クラス を使用して、カテゴリ テーブルの行を に OleDbDataAdapter DataSet 設定します。 この例では、 と を作成したと OleDbDataAdapter 想定しています 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 ステートメントを使用してデータ ソースからデータを取得します。 IDbConnectionselect コマンドに関連付けられているオブジェクトは有効である必要がありますが、開く必要はない必要があります。 が呼び出される前に を閉じた場合は、データを取得するために開き IDbConnection Fill 、閉じられます。 が呼び出される前に接続 Fill が開いている場合は、開いたままです。

コマンドから行が返されない場合、 にテーブルは追加されません。 DataSet 例外は発生しません。

の設定中にオブジェクトで重複する列が検出された場合は DbDataAdapter DataTable 、"columnname1"、"columnname2"、"columnname3" というパターンを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は DataSet 、"Column1"、"Column2" というパターンに従って に配置されます。

指定したクエリが複数の結果を返す場合、各結果セットは個別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("Table"、"Table1"、"Table2" など) を追加することで名前が付けられます。 行を返すクエリに対してテーブルが作成されないので、挿入クエリの後に選択クエリを処理する場合、選択クエリ用に作成されたテーブルは、最初に作成されたテーブルなので、"Table" という名前になります。 アプリで列名とテーブル名を使用する場合は、これらの名前付けパターンと競合が発生しなかからずにしてください。

メソッド Fill は、 に、大文字 DataSet と小文字だけが異なる複数 DataTable のオブジェクトを含むシナリオをサポートしています。 このような場合、 では、大文字と小文字を区別する比較を実行して対応するテーブルを検索し、完全一致が存在しない場合は新 Fill しいテーブルを作成します。 次の C# コードは、この動作を示しています。

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".  

が呼び出され、 に、大文字と小文字だけが異なる名前のが 1 つしか含まれている場合 Fill DataSet DataTableDataTable 、更新されます。 このシナリオでは、比較では大文字と小文字が区別されません。 次の C# コードは、この動作を示しています。

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.  

データ テーブルの設定中にエラーまたは例外が発生した場合、エラーが発生する前に追加された行はデータ テーブルに残ります。 操作の残りの部分は中止されます。

を設定するために使用する SELECT ステートメントが、batch ステートメントや SQL結果を返す場合は、次の DataSet 点に注意してください。

  • 結果の 1 つにエラーが含まれている場合、後続のすべての結果はスキップされ、 に追加されません DataSet

後続の呼び Fill 出しを使用して の内容を更新する場合 DataSet は、次の 2 つの条件を満たしている必要があります。

  1. このSQLは、 の設定に最初に使用したステートメントと一致する必要があります DataSet

  2. キー 列の 情報が存在する必要があります。 主キー情報が存在する場合、重複する行は調整され、 に対応する に 1 回 DataTable だけ表示されます DataSet 。 主キー情報は、 の プロパティを指定するか、 プロパティを に設定することで、 を使用 FillSchema PrimaryKey DataTable MissingSchemaAction して設定できます AddWithKey

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。

注意

複数の結果SQL返すバッチ ステートメントを処理する場合、OLE DB の .NET Framework Data Provider の実装では、最初の結果についてのみスキーマ情報 FillSchema が取得されます。 複数の結果のスキーマ情報を取得するには、 を Fill に設定して MissingSchemaAction を使用します AddWithKey

注意 (継承者)

派生クラスで Fill(DataSet) オーバーライドする場合は、必ず基本クラスの メソッドを呼び出 Fill(DataSet) してください。

こちらもご覧ください

適用対象

Fill(DataSet)

DataSet 内の行を追加または更新します。

public:
 override int Fill(System::Data::DataSet ^ dataSet);
public override int Fill (System.Data.DataSet dataSet);
override this.Fill : System.Data.DataSet -> int
Public Overrides Function Fill (dataSet As DataSet) As Integer

パラメーター

dataSet
DataSet

レコードおよび必要に応じてスキーマを格納するための DataSet

戻り値

Int32

DataSet で正常に追加または更新された行数。 これには、行を返さないステートメントの影響を受ける行は含まれません。

実装

注釈

メソッド Fill は、SELECT ステートメントを使用してデータ ソースからデータを取得します。 IDbConnectionselect コマンドに関連付けられているオブジェクトは有効である必要がありますが、開く必要はない必要があります。 が呼び出される前に を閉じた場合は、データを取得するために開いて IDbConnection Fill から閉じられます。 が呼び出される前に接続 Fill が開いている場合は、開いたままです。

データ テーブルの設定中にエラーまたは例外が発生した場合、エラーが発生する前に追加された行はデータ テーブルに残ります。 操作の残りの部分は中止されます。

コマンドから行が返されない場合、 にテーブルは追加されません。 DataSet 例外は発生しません。

の設定中にオブジェクトで重複する列が検出された場合は DbDataAdapter DataTable 、"columnname 1"、"columnname 2"、"columnname 3"というパターンを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は DataSet 、"Column1"、"Column2" というパターンに従って に配置されます。

指定したクエリが複数の結果を返す場合、クエリを返す各行の結果セットは別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("Table"、"Table1"、"Table2" など) を追加することで名前が付けられます。 行を返していないクエリに対してテーブルは作成されないので、挿入クエリの後に選択クエリを処理すると、選択クエリ用に作成されたテーブルは、最初に作成されたテーブルなので"Table" という名前になります。 アプリで列名とテーブル名を使用する場合は、これらの名前付けパターンと競合が発生しなかからずにしてください。

を設定するために使用する SELECT ステートメントがバッチ SQL ステートメントなど、複数の結果を返す場合、結果の 1 つにエラーが含まれている場合、後続のすべての結果はスキップされ、 には DataSet 追加されません DataSet

後続の呼び Fill 出しを使用して の内容を更新する場合 DataSet は、次の 2 つの条件を満たしている必要があります。

  1. このSQLは、 の設定に最初に使用したステートメントと一致する必要があります DataSet

  2. キー 列の 情報が存在する必要があります。

主キー情報が存在する場合、重複する行は調整され、 に対応する に 1 回 DataTable だけ表示されます DataSet 。 主キー情報は、 の プロパティを指定するか、 プロパティを に設定することで、 を使用 FillSchema PrimaryKey DataTable MissingSchemaAction して設定できます AddWithKey

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。

注意

複数の結果SQL返すバッチ ステートメントを処理する場合、.NET Framework Data Provider for OLE DB の の実装では、最初の結果についてのみスキーマ情報 FillSchema が取得されます。 複数の結果のスキーマ情報を取得するには、 を Fill に設定して MissingSchemaAction を使用します AddWithKey

こちらもご覧ください

適用対象

Fill(DataTable, IDbCommand, CommandBehavior)

指定した DataTableDataTable、および IDbCommand を使用して、データ ソース内の行と一致するように、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
Protected Overridable Function Fill (dataTable As DataTable, command As IDbCommand, behavior As CommandBehavior) As Integer

パラメーター

dataTable
DataTable

レコードおよび必要に応じてスキーマを格納するための DataTable

command
IDbCommand

データ ソースから行を取得するために使用する SQL SELECT ステートメント。

behavior
CommandBehavior

CommandBehavior 値のいずれか 1 つ。

戻り値

Int32

DataTable で正常に追加または更新された行数。 これには、行を返さないステートメントの影響を受ける行は含まれません。

注釈

メソッド Fill は、関連付けられたプロパティで指定された SELECT ステートメントを使用して、データ ソースから行を取得 SelectCommand します。 SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はない必要があります。 が呼び出される前に接続が閉じている場合は、データを取得するために開いて Fill から閉じられます。 が呼び出される前に接続 Fill が開いている場合は、開いたままです。

次に、この操作によって、 内の指定したコピー先オブジェクトに行が追加されます。オブジェクトが存在 Fill DataTable DataSet DataTable しない場合は作成されます。 オブジェクトを作成 DataTable する場合、 Fill 通常、この操作では列名のメタデータだけが作成されます。 ただし、 プロパティが MissingSchemaAction に設定されている場合 AddWithKey は、適切な主キーと制約も作成されます。

の設定中にオブジェクトで重複する列が検出された場合は DbDataAdapter DataTable 、"columnname 1"、"columnname 2"、"columnname 3"というパターンを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は DataSet 、"Column1"、"Column2" というパターンに従って に配置されます。

パラメーターとして を Fill 受け DataTable 取る のオーバーロードは、最初の結果のみを取得します。 パラメーターとして を受け Fill 取る DataSet のオーバーロードを使用して、複数の結果を取得します。

同じ で メソッド Fill を複数回使用できます DataTable 。 主キーが存在する場合、受信行は、既に存在する一致する行とマージされます。 主キーが存在しない場合は、受信行が に追加されます DataTable

SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKeyDataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。

注意

複数の結果SQL返すバッチ ステートメントを処理する場合、OLE DB の .NET Framework Data Provider の実装では、最初の結果についてのみスキーマ情報 FillSchema が取得されます。 複数の結果のスキーマ情報を取得するには、 を Fill に設定して MissingSchemaAction を使用します AddWithKey

注意 (継承者)

メソッドのこのオーバーロードは保護され、データ プロバイダーで使用 Fill(DataSet) .NET Framework設計されています。

こちらもご覧ください

適用対象