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