DbDataAdapter.Fill メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
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
パラメーター
- startRecord
- Int32
開始する 0 から始まるレコード番号。
- maxRecords
- Int32
取得するレコードの最大数。 開始レコードの後のすべてのレコードを取得するには、0 を指定します。
- srcTable
- String
テーブル マッピングに使用するソース テーブルの名前。
- command
- IDbCommand
データ ソースから行を取得するために使用される SQL SELECT ステートメント。
- behavior
- CommandBehavior
CommandBehavior値の 1 つ。
戻り値
DataSetで正常に追加または更新された行の数。 これには、行を返さないステートメントの影響を受ける行は含まれません。
例外
ソース テーブルが無効です。
注釈
maxRecords値 0 は、開始レコードの後に見つかったすべてのレコードを取得します。
maxRecordsが残りの行数より大きい場合は、残りの行のみが返され、エラーは発行されません。
Fill メソッドは、関連付けられているSelectCommand プロパティで指定された SELECT ステートメントを使用して、データ ソースから行を取得します。 SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はありません。 Fillが呼び出される前に接続が閉じられた場合は、データを取得するために開かれます。その後、閉じられます。 Fillが呼び出される前に接続が開いている場合、接続は開いたままです。
次に、Fill操作により、DataSet内のコピー先DataTableオブジェクトに行が追加され、DataTable オブジェクトがまだ存在しない場合は作成されます。
DataTableオブジェクトを作成する場合、通常、Fill操作では列名メタデータのみが作成されます。 ただし、 MissingSchemaAction プロパティが AddWithKey に設定されている場合は、適切な主キーと制約も作成されます。
DbDataAdapterがDataTableの設定中に重複する列を検出すると、パターン "columnname1"、"columnname2"、"columnname3" などを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は、"Column1"、"Column2" などのパターンに従って、 DataSet に配置されます。 複数の結果セットが 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".
Fillが呼び出され、名前が大文字と小文字のみが異なる 1 つのDataTableのみがDataSetに含まれている場合、その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で Fill メソッドを複数回使用できます。 主キーが存在する場合、受信行は、既に存在する一致する行とマージされます。 主キーが存在しない場合は、受信行が DataTableに追加されます。
SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKey に DataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。
注
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework データ プロバイダーの Fill と FillSchema の実装では、最初の結果についてのみスキーマ情報が取得されます。
注意 (継承者)
Fill(DataSet) メソッドのこのオーバーロードは保護されており、.NET Framework データ プロバイダーで使用するように設計されています。
こちらもご覧ください
適用対象
Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
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
パラメーター
- startRecord
- Int32
開始する 0 から始まるレコード番号。
- maxRecords
- Int32
取得するレコードの最大数。 開始レコードの後のすべてのレコードを取得するには、0 を指定します。
- command
- IDbCommand
DataTable オブジェクトを塗りつぶすために実行されるIDbCommand。
- behavior
- CommandBehavior
CommandBehavior値の 1 つ。
戻り値
データ テーブルに追加または更新された行の数。
例外
DataSetが無効です。
接続が見つかりませんでした。
注釈
maxRecords値 0 は、開始レコードの後に見つかったすべてのレコードを取得します。
maxRecordsが残りの行数より大きい場合は、残りの行のみが返され、エラーは発行されません。
Fill メソッドは、SELECT ステートメントを使用してデータ ソースからデータを取得します。 SELECT ステートメントに関連付けられている IDbConnection オブジェクトは有効である必要がありますが、開く必要はありません。 Fillが呼び出される前にIDbConnectionが閉じられると、データを取得するために開き、閉じられます。 Fillが呼び出される前に接続が開いている場合、接続は開いたままです。
コマンドが行を返さない場合、 DataSetにテーブルは追加されませんが、例外は発生しません。
DataTableの設定中に DbDataAdapter オブジェクトで重複する列が検出された場合、パターン "columnname1"、"columnname2"、"columnname3" などを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は、"Column1"、"Column2" などのパターンに従って、 DataSet に配置されます。
指定したクエリが複数の結果を返す場合、各結果セットは別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("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が呼び出され、名前が大文字と小文字のみが異なる 1 つのDataTableのみがDataSetに含まれている場合、その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 Data Provider for OLE DB のみ)。 最上位レベルの結果はmaxRecordsによって制限されますが、すべての子行が追加されます。いずれかの結果にエラーが含まれている場合、後続のすべての結果はスキップされます。
注
DataSetには、maxRecordsで示されるレコードの数を超えるレコードは含まれません。 ただし、クエリによって生成された結果セット全体は、サーバーから引き続き返されます。
注意 (継承者)
派生クラスで Fill(DataSet) をオーバーライドする場合は、必ず基底クラスの Fill(DataSet) メソッドを呼び出してください。
こちらもご覧ください
適用対象
Fill(DataSet, String, IDataReader, Int32, Int32)
DataSet、DataTable、およびIDataReader名を使用して、データ ソース内の行と一致するように、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
パラメーター
- dataReader
- IDataReader
IDataReaderの名前。
- startRecord
- Int32
開始する 0 から始まるレコード番号。
- maxRecords
- Int32
取得するレコードの最大数。 開始レコードの後のすべてのレコードを取得するには、0 を指定します。
戻り値
DataSetで正常に追加または更新された行の数。 これには、行を返さないステートメントの影響を受ける行は含まれません。
例外
注釈
maxRecords値 0 は、開始レコードの後に見つかったすべてのレコードを取得します。
maxRecordsが残りの行数より大きい場合は、残りの行のみが返され、エラーは発行されません。
適用対象
Fill(DataSet, Int32, Int32, String)
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
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
パラメーター
- startRecord
- Int32
開始する 0 から始まるレコード番号。
- maxRecords
- Int32
取得するレコードの最大数。 開始レコードの後のすべてのレコードを取得するには、0 を指定します。
- srcTable
- String
テーブル マッピングに使用するソース テーブルの名前。
戻り値
DataSetで正常に追加または更新された行の数。 これには、行を返さないステートメントの影響を受ける行は含まれません。
例外
DataSetが無効です。
接続が見つかりませんでした。
例
次の例では、派生クラスOleDbDataAdapterを使用して、Categories テーブルの行 10 から 15 行でDataSetを塗りつぶします。 この例では、 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 コマンドが複数の結果を返すステートメントである場合、 Fill は最初の結果にのみ maxRecords 適用されます。
Fill メソッドは、SELECT ステートメントを使用してデータ ソースからデータを取得します。 SELECT ステートメントに関連付けられている IDbConnection オブジェクトは有効である必要がありますが、開く必要はありません。 Fillが呼び出される前にIDbConnectionが閉じられると、データを取得して閉じます。 Fillが呼び出される前に接続が開いている場合、接続は開いたままです。
コマンドが行を返さない場合、 DataSetにテーブルは追加されませんが、例外は発生しません。
DataTableの設定中に DbDataAdapter オブジェクトで重複する列が検出された場合、パターン "columnname1"、"columnname2"、"columnname3" などを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は、"Column1"、"Column2" などのパターンに従って、 DataSet に配置されます。
指定したクエリが複数の結果を返す場合、各結果セットは別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("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が呼び出され、名前が大文字と小文字のみが異なる 1 つのDataTableのみがDataSetに含まれている場合、その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 Data Provider for OLE DB のみ)。 最上位レベルの結果はmaxRecordsによって制限されますが、すべての子行が追加されます。いずれかの結果にエラーが含まれている場合、後続のすべての結果はスキップされ、 DataSetには追加されません。
後続の Fill 呼び出しを使用して DataSetの内容を更新する場合は、次の 2 つの条件を満たす必要があります。
SQL ステートメントは、 DataSetの設定に最初に使用されたものと一致する必要があります。
キー列の情報が存在する必要があります。
主キー情報が存在する場合、重複する行はすべて調整され、DataSetに対応するDataTableに 1 回だけ表示されます。 主キー情報は、FillSchema、DataTableの PrimaryKey プロパティを指定するか、MissingSchemaAction プロパティを AddWithKey に設定することによって設定できます。
SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKey に DataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。
注
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework Data Provider for OLE DB の FillSchema の実装では、最初の結果についてのみスキーマ情報が取得されます。 複数の結果のスキーマ情報を取得するには、MissingSchemaActionを AddWithKey に設定したFillを使用します。
注
DataSetには、maxRecordsで示されるレコードの数を超えるレコードは含まれません。 ただし、クエリによって生成された結果セット全体は、サーバーから引き続き返されます。
注意 (継承者)
派生クラスで Fill(DataSet) をオーバーライドする場合は、必ず基底クラスの Fill(DataSet) メソッドを呼び出してください。
こちらもご覧ください
適用対象
Fill(Int32, Int32, DataTable[])
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- 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 を指定します。
戻り値
DataTable オブジェクトに正常に追加または更新された行の数。 この値には、行を返さないステートメントの影響を受ける行は含まれません。
例外
dataTables が null または空の配列です。
注釈
maxRecords値 0 は、開始レコードの後に見つかったすべてのレコードを取得します。
maxRecordsが残りの行数より大きい場合は、残りの行のみが返され、エラーは発行されません。
Fill メソッドは、関連付けられているSelectCommand プロパティで指定された SELECT ステートメントを使用して、データ ソースから行を取得します。 SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はありません。 Fillが呼び出される前に接続が閉じられると、データを取得するために開かれます。その後、接続は閉じられます。 Fillが呼び出される前に接続が開いている場合、接続は開いたままです。
次に、Fill操作により、DataSet内のコピー先DataTableオブジェクトに行が追加され、DataTable オブジェクトがまだ存在しない場合は作成されます。
DataTableオブジェクトを作成する場合、通常、Fill操作では列名メタデータのみが作成されます。 ただし、 MissingSchemaAction プロパティが AddWithKey に設定されている場合は、適切な主キーと制約も作成されます。
SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKey に DataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。
データ アダプターは、 DataTableの設定中に重複する列を検出した場合、パターン "columnname1"、"columnname2"、"columnname3" などを使用して、後続の列の名前を生成します。 受信データに名前のない列が含まれている場合は、"Column1"、"Column2" などのパターンに従って、 DataSet に配置されます。 複数の結果セットが DataSetに追加されると、各結果セットは個別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("Table"、"Table1"、"Table2" など) を追加することで名前が付けられます。 アプリで列名とテーブル名を使用する場合は、これらの名前付けパターンと競合がないことを確認します。
DataSetの設定に使用する SELECT ステートメントが複数の結果 (バッチ SQL ステートメントなど) を返す場合、結果の 1 つにエラーが含まれている場合、後続のすべての結果はスキップされ、DataSetには追加されません。
同じDataTableで Fill メソッドを複数回使用できます。 主キーが存在する場合、受信行は、既に存在する一致する行とマージされます。 主キーが存在しない場合は、受信行が DataTableに追加されます。
注
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework Data Provider for OLE DB の FillSchema の実装では、最初の結果についてのみスキーマ情報が取得されます。 複数の結果のスキーマ情報を取得するには、MissingSchemaActionを AddWithKey に設定したFillを使用します。
こちらもご覧ください
適用対象
Fill(DataTable)
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
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
パラメーター
戻り値
DataSetで正常に追加または更新された行の数。 これには、行を返さないステートメントの影響を受ける行は含まれません。
例外
ソース テーブルが無効です。
注釈
Fill メソッドは、関連付けられているSelectCommand プロパティで指定された SELECT ステートメントを使用して、データ ソースから行を取得します。 SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はありません。 Fillが呼び出される前に接続が閉じられた場合は、データを取得するために開かれます。その後、閉じられます。 Fillが呼び出される前に接続が開いている場合、接続は開いたままです。
次に、Fill操作により、DataSet内のコピー先DataTableオブジェクトに行が追加され、DataTable オブジェクトがまだ存在しない場合は作成されます。
DataTableオブジェクトを作成する場合、通常、Fill操作では列名メタデータのみが作成されます。 ただし、 MissingSchemaAction プロパティが AddWithKey に設定されている場合は、適切な主キーと制約も作成されます。
DbDataAdapterがDataTableの設定中に重複する列を検出すると、パターン "columnname1"、"columnname2"、"columnname3" などを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は、"Column1"、"Column2" などのパターンに従って、 DataSet に配置されます。 複数の結果セットが DataSet に追加されると、各結果セットは個別のテーブルに配置されます。
パラメーターとしてDataTableを受け取るFillのオーバーロードは、最初の結果のみを取得します。 複数の結果を取得するパラメーターとしてDataSetを受け取るFillのオーバーロードを使用します。
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が呼び出され、名前が大文字と小文字のみが異なる 1 つのDataTableのみがDataSetに含まれている場合、その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で Fill メソッドを複数回使用できます。 主キーが存在する場合、受信行は、既に存在する一致する行とマージされます。 主キーが存在しない場合は、受信行が DataTableに追加されます。
SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKey に DataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。
注
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework データ プロバイダーの Fill と FillSchema の実装では、最初の結果についてのみスキーマ情報が取得されます。
注意 (継承者)
Fill(DataSet) メソッドのこのオーバーロードは保護されており、.NET Framework データ プロバイダーで使用するように設計されています。
こちらもご覧ください
適用対象
Fill(DataTable, IDataReader)
指定したDataTable名とIDataReader名を使用して、データ ソース内の行と一致するように、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
パラメーター
- dataReader
- IDataReader
IDataReaderの名前。
戻り値
DataTableで正常に追加または更新された行の数。 これには、行を返さないステートメントの影響を受ける行は含まれません。
適用対象
Fill(DataSet, String)
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
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
パラメーター
- srcTable
- String
テーブル マッピングに使用するソース テーブルの名前。
戻り値
DataSetで正常に追加または更新された行の数。 これには、行を返さないステートメントの影響を受ける行は含まれません。
例外
ソース テーブルが無効です。
例
次の例では、派生クラス OleDbDataAdapterを使用して、categories テーブルの行を 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 ステートメントを使用してデータ ソースからデータを取得します。 select コマンドに関連付けられている IDbConnection オブジェクトは有効である必要がありますが、開く必要はありません。 Fillが呼び出される前にIDbConnectionが閉じられると、データを取得するために開き、閉じられます。 Fillが呼び出される前に接続が開いている場合、接続は開いたままです。
コマンドが行を返さない場合、 DataSetにテーブルは追加されず、例外は発生しません。
DataTableの設定中に DbDataAdapter オブジェクトで重複する列が検出された場合、"columnname1"、"columnname2"、"columnname3" などのパターンを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は、"Column1"、"Column2" などのパターンに従って、 DataSet に配置されます。
指定したクエリが複数の結果を返す場合、各結果セットは別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("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が呼び出され、名前が大文字と小文字のみが異なる 1 つのDataTableのみがDataSetに含まれている場合、その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 つの条件を満たす必要があります。
SQL ステートメントは、 DataSetの設定に最初に使用されたものと一致する必要があります。
キー列の情報が存在する必要があります。 主キー情報が存在する場合、重複する行はすべて調整され、DataSetに対応するDataTableに 1 回だけ表示されます。 主キー情報は、FillSchema、DataTableの PrimaryKey プロパティを指定するか、MissingSchemaAction プロパティを
AddWithKeyに設定することによって設定できます。
SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKey に DataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。
注
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework Data Provider for OLE DB の FillSchema の実装では、最初の結果についてのみスキーマ情報が取得されます。 複数の結果のスキーマ情報を取得するには、MissingSchemaActionを AddWithKey に設定したFillを使用します。
注意 (継承者)
派生クラスで Fill(DataSet) をオーバーライドする場合は、必ず基底クラスの Fill(DataSet) メソッドを呼び出してください。
こちらもご覧ください
適用対象
Fill(DataSet)
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- 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で正常に追加または更新された行の数。 これには、行を返さないステートメントの影響を受ける行は含まれません。
実装
注釈
Fill メソッドは、SELECT ステートメントを使用してデータ ソースからデータを取得します。 select コマンドに関連付けられている IDbConnection オブジェクトは有効である必要がありますが、開く必要はありません。 Fillが呼び出される前にIDbConnectionが閉じられると、データを取得して閉じます。 Fillが呼び出される前に接続が開いている場合、接続は開いたままです。
データ テーブルの設定中にエラーまたは例外が発生した場合、エラーが発生する前に追加された行はデータ テーブルに残ります。 操作の残りの部分は中止されます。
コマンドが行を返さない場合、 DataSetにテーブルは追加されず、例外は発生しません。
DbDataAdapter オブジェクトがDataTableの設定中に重複する列を検出すると、パターン "columnname1"、"columnname2"、"columnname3" などを使用して後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は、"Column1"、"Column2" などのパターンに従って、 DataSet に配置されます。
指定したクエリが複数の結果を返す場合、クエリを返す各行の結果セットは別のテーブルに配置されます。 追加の結果セットには、指定したテーブル名に整数値 ("Table"、"Table1"、"Table2" など) を追加することで名前が付けられます。 行を返さないクエリに対してテーブルは作成されないため、挿入クエリの後に選択クエリを処理すると、選択クエリ用に作成されたテーブルの名前は "Table" になります。これは、最初に作成されたテーブルであるためです。 アプリで列名とテーブル名を使用する場合は、これらの名前付けパターンと競合がないことを確認します。
DataSetの設定に使用した SELECT ステートメントが複数の結果 (バッチ SQL ステートメントなど) を返す場合、結果の 1 つにエラーが含まれている場合、後続のすべての結果はスキップされ、DataSetに追加されません。
後続の Fill 呼び出しを使用して DataSetの内容を更新する場合は、次の 2 つの条件を満たす必要があります。
SQL ステートメントは、 DataSetの設定に最初に使用されたものと一致する必要があります。
キー列の情報が存在する必要があります。
主キー情報が存在する場合、重複する行はすべて調整され、DataSetに対応するDataTableに 1 回だけ表示されます。 主キー情報は、FillSchema、DataTableの PrimaryKey プロパティを指定するか、MissingSchemaAction プロパティを AddWithKey に設定することによって設定できます。
SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKey に DataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。
注
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework Data Provider for OLE DB の FillSchema の実装では、最初の結果についてのみスキーマ情報が取得されます。 複数の結果のスキーマ情報を取得するには、MissingSchemaActionを AddWithKey に設定したFillを使用します。
こちらもご覧ください
適用対象
Fill(DataTable, IDbCommand, CommandBehavior)
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
- ソース:
- DbDataAdapter.cs
指定したDataTable、IDbCommand、およびCommandBehaviorを使用して、データ ソース内の行と一致するように、DataTable内の行を追加または更新します。
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
パラメーター
- command
- IDbCommand
データ ソースから行を取得するために使用される SQL SELECT ステートメント。
- behavior
- CommandBehavior
CommandBehavior値の 1 つ。
戻り値
DataTableで正常に追加または更新された行の数。 これには、行を返さないステートメントの影響を受ける行は含まれません。
注釈
Fill メソッドは、関連付けられているSelectCommand プロパティで指定された SELECT ステートメントを使用して、データ ソースから行を取得します。 SELECT ステートメントに関連付けられている接続オブジェクトは有効である必要がありますが、開く必要はありません。 Fillが呼び出される前に接続が閉じられると、データを取得するために開かれた後、閉じられます。 Fillが呼び出される前に接続が開いている場合、接続は開いたままです。
Fill操作では、DataSet内の指定したコピー先DataTable オブジェクトに行が追加され、DataTable オブジェクトがまだ存在しない場合は作成されます。
DataTable オブジェクトを作成する場合、通常、Fill操作では列名メタデータのみが作成されます。 ただし、 MissingSchemaAction プロパティが AddWithKey に設定されている場合は、適切な主キーと制約も作成されます。
DataTableの設定中に DbDataAdapter オブジェクトで重複する列が検出された場合、パターン "columnname1"、"columnname2"、"columnname3" などを使用して、後続の列の名前が生成されます。 受信データに名前のない列が含まれている場合は、"Column1"、"Column2" などのパターンに従って、 DataSet に配置されます。
パラメーターとしてDataTableを受け取るFillのオーバーロードは、最初の結果のみを取得します。 複数の結果を取得するパラメーターとしてDataSetを受け取るFillのオーバーロードを使用します。
同じDataTableで Fill メソッドを複数回使用できます。 主キーが存在する場合、受信行は、既に存在する一致する行とマージされます。 主キーが存在しない場合は、受信行が DataTableに追加されます。
SelectCommand が OUTER JOIN の結果を返す場合、 DataAdapter は、生成される PrimaryKey に DataTable値を設定しません。 重複する行が正しく解決されるように、主キーを明示的に定義する必要があります。 詳しくは、「主キーの定義」をご覧ください。
注
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework Data Provider for OLE DB の FillSchema の実装では、最初の結果についてのみスキーマ情報が取得されます。 複数の結果のスキーマ情報を取得するには、MissingSchemaActionを AddWithKey に設定したFillを使用します。
注意 (継承者)
Fill(DataSet) メソッドのこのオーバーロードは保護されており、.NET Framework データ プロバイダーで使用するように設計されています。