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)

ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs

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 つ。

戻り値

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

例外

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

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

または

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

注釈

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

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

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

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

メソッドはFill、 に複数DataTableのオブジェクトがDataSet含まれているシナリオをサポートしています。このオブジェクトの名前は大文字と小文字のみが異なります。 このような状況では、 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".  

が呼び出され、 にDataSet大文字と小文字のみがDataTable異なる名前が含まれている場合Fillは、更新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.  

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

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

注意

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

注意 (継承者)

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

こちらもご覧ください

適用対象

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

ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs

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 つ。

戻り値

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

例外

DataSet が無効です。

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

または

接続が無効です。

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

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

または

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

注釈

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

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

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

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

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

メソッドはFill、 に複数DataTableのオブジェクトがDataSet含まれているシナリオをサポートしています。このオブジェクトの名前は大文字と小文字のみが異なります。 このような状況では、 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".  

が呼び出され、 にDataSet大文字と小文字のみがDataTable異なる名前が含まれている場合Fillは、更新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.  

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

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

  • バッチ SQL ステートメントから複数の結果を処理する場合は、 maxRecords 最初の結果にのみ適用されます。 チャプター化された結果を含む行についても同様です (.NET Framework OLE DB 用データ プロバイダーのみ)。 最上位の結果は によって maxRecords制限されますが、すべての子行が追加されます。

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

注意

には 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 を指定します。

戻り値

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

例外

startRecord が 0 未満です。

または

maxRecords が 0 未満です。

注釈

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

適用対象

Fill(DataSet, Int32, Int32, String)

ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs

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

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

戻り値

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

例外

DataSet が無効です。

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

または

接続が無効です。

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

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

または

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

次の例では、 派生クラス を使用して、 OleDbDataAdapterを Categories テーブルの行 10 から 15 行で埋めますDataSet。 この例では、 と DataSetを作成OleDbDataAdapterしていることを前提としています。

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 コマンドが複数の結果を返すステートメントである場合は、 Fill 最初の結果にのみ適用されます maxRecords

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

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

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

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

メソッドはFill、 に複数DataTableのオブジェクトがDataSet含まれているシナリオをサポートしています。このオブジェクトの名前は大文字と小文字のみが異なります。 このような状況では、 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".  

が呼び出され、 にDataSet大文字と小文字のみがDataTable異なる名前が含まれている場合Fillは、更新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.  

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

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

  • バッチ SQL ステートメントから複数の結果を処理する場合は、 maxRecords 最初の結果にのみ適用されます。 チャプター化された結果を含む行についても同様です (.NET Framework OLE DB 用データ プロバイダーのみ)。 最上位の結果は によって maxRecords制限されますが、すべての子行が追加されます。

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

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

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

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

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

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

注意

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

注意

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

注意 (継承者)

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

こちらもご覧ください

適用対象

Fill(Int32, Int32, DataTable[])

ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs

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

戻り値

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

例外

dataTablesnull または空の配列です。

startRecord が 0 未満です。

または

maxRecords が 0 未満です。

注釈

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

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

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

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

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

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

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

注意

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

こちらもご覧ください

適用対象

Fill(DataTable)

ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs

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 の名前。

戻り値

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

例外

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

注釈

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

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

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

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

メソッドはFill、 に複数DataTableのオブジェクトがDataSet含まれているシナリオをサポートしています。このオブジェクトの名前は大文字と小文字のみが異なります。 このような状況では、 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".  

が呼び出され、 にDataSet大文字と小文字のみがDataTable異なる名前が含まれている場合Fillは、更新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.  

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

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

注意

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

注意 (継承者)

メソッドの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 の名前。

戻り値

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

適用対象

Fill(DataSet, String)

ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs

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

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

戻り値

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

例外

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

次の例では、 派生クラス を使用して、 OleDbDataAdapterに categories テーブルの行を入力 DataSet します。 この例では、 と DataSetを作成OleDbDataAdapterしていることを前提としています。

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

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

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

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

メソッドはFill、 に複数DataTableのオブジェクトがDataSet含まれているシナリオをサポートしています。このオブジェクトの名前は大文字と小文字のみが異なります。 このような状況では、 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".  

が呼び出され、 にDataSet大文字と小文字のみがDataTable異なる名前が含まれている場合Fillは、更新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.  

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

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

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

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

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

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

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

注意

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

注意 (継承者)

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

こちらもご覧ください

適用対象

Fill(DataSet)

ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs

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

戻り値

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

実装

注釈

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

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

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

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

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

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

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

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

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

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

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

注意

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

こちらもご覧ください

適用対象

Fill(DataTable, IDbCommand, CommandBehavior)

ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs
ソース:
DbDataAdapter.cs

指定した 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 つ。

戻り値

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

注釈

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

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

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

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

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

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

注意

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

注意 (継承者)

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

こちらもご覧ください

適用対象