DataSet.Load メソッド

定義

指定された DataSet を使用し、IDataReader にデータ ソースからの値を設定します。Fills a DataSet with values from a data source using the supplied IDataReader.

オーバーロード

Load(IDataReader, LoadOption, DataTable[])

指定した DataSet を使用するデータ ソースの値を IDataReader に格納し、DataTable インスタンスの配列を使用してスキーマ情報と名前空間情報を指定します。Fills a DataSet with values from a data source using the supplied IDataReader, using an array of DataTable instances to supply the schema and namespace information.

Load(IDataReader, LoadOption, String[])

指定した DataSet を使用するデータ ソースの値を IDataReader に格納し、文字列の配列を使用して DataSet 内のテーブルの名前を指定します。Fills a DataSet with values from a data source using the supplied IDataReader, using an array of strings to supply the names for the tables within the DataSet.

Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[])

指定した DataSet を使用するデータ ソースの値を IDataReader に格納し、DataTable インスタンスの配列を使用してスキーマ情報と名前空間情報を指定します。Fills a DataSet with values from a data source using the supplied IDataReader, using an array of DataTable instances to supply the schema and namespace information.

注釈

メソッドは、 Load 1 つのにデータを格納するための手法を提供し DataTable 、インスタンスから取得し IDataReader ます。The Load method provides a technique for filling a single DataTable with data, retrieved from an IDataReader instance. このメソッドは同じ機能を提供しますが、から複数の結果セットを内の複数のテーブルに読み込むことができ IDataReader DataSet ます。This method provides the same functionality, but allows you to load multiple result sets from an IDataReader into multiple tables within a DataSet.

DataSet が既に行を含んでいる場合、データ ソースからの受信データは既存の行にマージされます。If the DataSet already contains rows, the incoming data from the data source is merged with the existing rows.

Loadこのメソッドは、指定されたデータソースからデータを取得し、それを現在のデータコンテナー (この場合は a) に追加することを中心にして、いくつかの一般的なシナリオで使用でき DataSet ます。The Load method can be used in several common scenarios, all centered around getting data from a specified data source and adding it to the current data container (in this case, a DataSet). これらのシナリオでは、の標準の使用方法について説明し DataSet 、その更新とマージの動作について説明します。These scenarios describe standard usage for a DataSet, describing its update and merge behavior.

は、 DataSet 1 つのプライマリデータソースと同期または更新します。A DataSet synchronizes or updates with a single primary data source. DataSet 変更を追跡し、プライマリデータソースとの同期を許可します。The DataSet tracks changes, allowing synchronization with the primary data source. さらに、は、 DataSet 1 つまたは複数のセカンダリデータソースからの増分データを受け入れることができます。In addition, a DataSet can accept incremental data from one or more secondary data sources. は、 DataSet セカンダリデータソースとの同期を可能にするために、変更の追跡を行いません。The DataSet isn't responsible for tracking changes in order to allow synchronization with the secondary data source.

これらの2つの仮想データソースを指定すると、ユーザーは次のいずれかの動作を必要とする可能性があります。Given these two hypothetical data sources, a user is likely to require one of the following behaviors:

  • DataSetプライマリデータソースから初期化します。Initialize DataSet from a primary data source. このシナリオでは、ユーザーは、 DataSet プライマリデータソースの値を使用して空のを初期化する必要があります。In this scenario, the user wants to initialize an empty DataSet with values from the primary data source. 1つ以上の DataTable の内容が変更されています。One or more DataTable's contents are modified. その後、ユーザーが変更をプライマリデータソースに反映する予定です。Later the user intends to propagate changes back to the primary data source.

  • 変更を保持し、プライマリデータソースから再同期します。Preserve changes and re-synchronize from the primary data source. このシナリオでは、ユーザーは前のシナリオで入力したを取得し、 DataSet プライマリデータソースとの増分同期を実行して、で行われた変更を保持する必要が DataSet あります。In this scenario, the user wants to take the DataSet filled in the previous scenario and perform an incremental synchronization with the primary data source, preserving modifications made in the DataSet.

  • セカンダリデータソースからの増分データフィード。Incremental data feed from secondary data sources. このシナリオでは、ユーザーは1つまたは複数のセカンダリデータソースから変更をマージし、それらの変更をプライマリデータソースに反映させます。In this scenario, the user wants to merge changes from one or more secondary data sources, and propagate those changes back to the primary data source.

メソッドを使用すると、 Load これらすべてのシナリオが可能になります。The Load method makes all these scenarios possible. このメソッドを使用すると、読み込みオプションパラメーターを指定して、既に内にある行を DataTable 読み込んでいる行と組み合わせることができます。This method allows you to specify a load option parameter, indicating how rows already in a DataTable combine with rows being loaded. 次の表では、列挙型によって提供される3つの読み込みオプションについて説明し LoadOption ます。The following table describes the three load options provided by the LoadOption enumeration. どちらの場合も、説明は、受信データの行の主キーが既存の行の主キーと一致する場合の動作を示します。In each case, the description indicates the behavior when the primary key of a row in the incoming data matches the primary key of an existing row.

Load オプションLoad Option 説明Description
PreserveChanges (既定値)PreserveChanges (default) 受信した行の値を使用して、行の元のバージョンを更新します。Updates the original version of the row with the value of the incoming row.
OverwriteChanges 行の現在のバージョンと元のバージョンを、受信した行の値で更新します。Updates the current and original versions of the row with the value of the incoming row.
Upsert 行の現在のバージョンを、受信した行の値で更新します。Updates the current version of the row with the value of the incoming row.

一般に、 PreserveChanges およびオプションは、 OverwriteChanges ユーザーが DataSet とその変更をプライマリデータソースと同期する必要があるシナリオを対象としています。In general, the PreserveChanges and OverwriteChanges options are intended for scenarios in which the user needs to synchronize the DataSet and its changes with the primary data source. オプションを指定すると、 Upsert 1 つまたは複数のセカンダリデータソースからの変更を簡単に集計できます。The Upsert option facilitates aggregating changes from one or more secondary data sources.

Load(IDataReader, LoadOption, DataTable[])

指定した DataSet を使用するデータ ソースの値を IDataReader に格納し、DataTable インスタンスの配列を使用してスキーマ情報と名前空間情報を指定します。Fills a DataSet with values from a data source using the supplied IDataReader, using an array of DataTable instances to supply the schema and namespace information.

public:
 void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, ... cli::array <System::Data::DataTable ^> ^ tables);
public void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, params System.Data.DataTable[] tables);
member this.Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.DataTable[] -> unit
Public Sub Load (reader As IDataReader, loadOption As LoadOption, ParamArray tables As DataTable())

パラメーター

reader
IDataReader

1 つ以上の結果セットを含む IDataReaderAn IDataReader that provides one or more result sets.

loadOption
LoadOption

LoadOption 列挙体の値。DataTable 内の DataSet インスタンスに既に含まれている行を同じ主キーを持つ受信した行と結合する方法を示します。A value from the LoadOption enumeration that indicates how rows already in the DataTable instances within the DataSet will be combined with incoming rows that share the same primary key.

tables
DataTable[]

DataTable メソッドが名前と名前空間の情報を取得する、Load(IDataReader, LoadOption, DataTable[]) インスタンスの配列。An array of DataTable instances, from which the Load(IDataReader, LoadOption, DataTable[]) method retrieves name and namespace information. これらのテーブルは、この DataTableCollection に格納されている DataSet のメンバーである必要があります。Each of these tables must be a member of the DataTableCollection contained by this DataSet.

次の例では、新しいを作成し、 DataSet 2 つのインスタンスをに追加します。次に、 DataTable DataSet メソッドを DataSet 使用してを入力し Load 、2つの結果セットを含むからデータを取得し DataTableReader ます。The following example creates a new DataSet, adds two DataTable instances to the DataSet, and then fills the DataSet using the Load method, retrieving data from a DataTableReader that contains two result sets. 最後に、この例では、テーブルの内容をコンソールウィンドウに表示します。Finally, the example displays the contents of the tables in the console window.

static void Main()
{
    DataSet dataSet = new DataSet();

    DataTable customerTable = new DataTable();
    DataTable productTable = new DataTable();

    // This information is cosmetic, only.
    customerTable.TableName = "Customers";
    productTable.TableName = "Products";

    // Add the tables to the DataSet:
    dataSet.Tables.Add(customerTable);
    dataSet.Tables.Add(productTable);

    // Load the data into the existing DataSet.
    DataTableReader reader = GetReader();
    dataSet.Load(reader, LoadOption.OverwriteChanges,
        customerTable, productTable);

    // Print out the contents of each table:
    foreach (DataTable table in dataSet.Tables)
    {
        PrintColumns(table);
    }

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

private static DataTable GetCustomers()
{
    // Create sample Customers table.
    DataTable table = new DataTable();
    table.TableName = "Customers";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Mary" });
    table.Rows.Add(new object[] { 1, "Andy" });
    table.Rows.Add(new object[] { 2, "Peter" });
    table.AcceptChanges();
    return table;
}

private static DataTable GetProducts()
{
    // Create sample Products table.
    DataTable table = new DataTable();
    table.TableName = "Products";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID",
        typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Wireless Network Card" });
    table.Rows.Add(new object[] { 1, "Hard Drive" });
    table.Rows.Add(new object[] { 2, "Monitor" });
    table.Rows.Add(new object[] { 3, "CPU" });
    table.AcceptChanges();
    return table;
}

private static void PrintColumns(DataTable table)
{
    Console.WriteLine();
    Console.WriteLine(table.TableName);
    Console.WriteLine("=========================");
    // Loop through all the rows in the table:
    foreach (DataRow row in table.Rows)
    {
        for (int i = 0; i < table.Columns.Count; i++)
        {
            Console.Write(row[i] + " ");
        }
        Console.WriteLine();
    }
}

private static DataTableReader GetReader()
{
    // Return a DataTableReader containing multiple
    // result sets, just for the sake of this demo.
    DataSet dataSet = new DataSet();
    dataSet.Tables.Add(GetCustomers());
    dataSet.Tables.Add(GetProducts());
    return dataSet.CreateDataReader();
}
Sub Main()
    Dim dataSet As New DataSet

    Dim customerTable As New DataTable
    Dim productTable As New DataTable

    ' This information is cosmetic, only.
    customerTable.TableName = "Customers"
    productTable.TableName = "Products"

    ' Add the tables to the DataSet:
    dataSet.Tables.Add(customerTable)
    dataSet.Tables.Add(productTable)

    ' Load the data into the existing DataSet. 
    Dim reader As DataTableReader = GetReader()
    dataSet.Load(reader, LoadOption.OverwriteChanges, _
        customerTable, productTable)

    ' Print out the contents of each table:
    For Each table As DataTable In dataSet.Tables
        PrintColumns(table)
    Next

    Console.WriteLine("Press any key to continue.")
    Console.ReadKey()
End Sub

Private Function GetCustomers() As DataTable
    ' Create sample Customers table.
    Dim table As New DataTable
    table.TableName = "Customers"

    ' Create two columns, ID and Name.
    Dim idColumn As DataColumn = table.Columns.Add("ID", _
        GetType(Integer))
    table.Columns.Add("Name", GetType(String))

    ' Set the ID column as the primary key column.
    table.PrimaryKey = New DataColumn() {idColumn}

    table.Rows.Add(New Object() {0, "Mary"})
    table.Rows.Add(New Object() {1, "Andy"})
    table.Rows.Add(New Object() {2, "Peter"})
    table.AcceptChanges()
    Return table
End Function

Private Function GetProducts() As DataTable
    ' Create sample Products table, in order
    ' to demonstrate the behavior of the DataTableReader.
    Dim table As New DataTable
    table.TableName = "Products"

    ' Create two columns, ID and Name.
    Dim idColumn As DataColumn = table.Columns.Add("ID", _
        GetType(Integer))
    table.Columns.Add("Name", GetType(String))

    ' Set the ID column as the primary key column.
    table.PrimaryKey = New DataColumn() {idColumn}

    table.Rows.Add(New Object() {0, "Wireless Network Card"})
    table.Rows.Add(New Object() {1, "Hard Drive"})
    table.Rows.Add(New Object() {2, "Monitor"})
    table.Rows.Add(New Object() {3, "CPU"})
    Return table
End Function

Private Function GetReader() As DataTableReader
    ' Return a DataTableReader containing multiple
    ' result sets, just for the sake of this demo.
    Dim dataSet As New DataSet
    dataSet.Tables.Add(GetCustomers())
    dataSet.Tables.Add(GetProducts())
    Return dataSet.CreateDataReader()
End Function

Private Sub PrintColumns( _
   ByVal table As DataTable)

    Console.WriteLine()
    Console.WriteLine(table.TableName)
    Console.WriteLine("=========================")
    ' Loop through all the rows in the table.
    For Each row As DataRow In table.Rows
        For Each col As DataColumn In table.Columns
            Console.Write(row(col).ToString() & " ")
        Next
        Console.WriteLine()
    Next
End Sub

注釈

メソッドは、 Load 1 つのにデータを格納するための手法を提供し DataTable 、インスタンスから取得し IDataReader ます。The Load method provides a technique for filling a single DataTable with data, retrieved from an IDataReader instance. このメソッドは同じ機能を提供しますが、から複数の結果セットを内の複数のテーブルに読み込むことができ IDataReader DataSet ます。This method provides the same functionality, but allows you to load multiple result sets from an IDataReader into multiple tables within a DataSet.

注意

InvalidOperationException受信したのいずれかのソースデータ列が計算列の場合、読み込み操作はで失敗し reader ます。The load operation will fail with an InvalidOperationException if any of the source data columns in the incoming reader are computed columns.

パラメーターを使用すると、インポートした loadOption データが既存のデータとどのように対話するかを指定できます。また、列挙体のいずれかの値を指定することもでき LoadOption ます。The loadOption parameter allows you to specify how you want the imported data to interact with existing data, and can be any of the values from the LoadOption enumeration. DataTable Load このパラメーターの使用方法の詳細については、メソッドのドキュメントを参照してください。See the documentation for the DataTableLoad method for more information on using this parameter.

tablesパラメーターを使用すると DataTable 、リーダーから読み込まれた各結果セットに対応するテーブルの順序を示す、インスタンスの配列を指定できます。The tables parameter allows you to specify an array of DataTable instances, indicating the order of the tables corresponding to each result set loaded from the reader. メソッドは、指定された LoadDataTable インスタンスに、ソースデータリーダーからの1つの結果セットのデータを格納します。The Load method fills each supplied DataTable instance with data from a single result set from the source data reader. 各結果セットの後、メソッドは、結果セットが Load なくなるまで、リーダー内の次の結果セットに移動します。After each result set, the Load method moves on to the next result set within the reader, until there are no more result sets.

このメソッドの名前解決スキームは、その後にクラスのメソッドが続くものと同じです Fill DbDataAdapterThe name resolution scheme for this method is the same as that followed by the Fill method of the DbDataAdapter class.

こちらもご覧ください

適用対象

Load(IDataReader, LoadOption, String[])

指定した DataSet を使用するデータ ソースの値を IDataReader に格納し、文字列の配列を使用して DataSet 内のテーブルの名前を指定します。Fills a DataSet with values from a data source using the supplied IDataReader, using an array of strings to supply the names for the tables within the DataSet.

public:
 void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, ... cli::array <System::String ^> ^ tables);
public void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, params string[] tables);
member this.Load : System.Data.IDataReader * System.Data.LoadOption * string[] -> unit
Public Sub Load (reader As IDataReader, loadOption As LoadOption, ParamArray tables As String())

パラメーター

reader
IDataReader

1 つ以上の結果セットを含む IDataReaderAn IDataReader that provides one or more result sets.

loadOption
LoadOption

LoadOption 列挙体の値。DataTable 内の DataSet インスタンスに既に含まれている行を同じ主キーを持つ受信した行と結合する方法を示します。A value from the LoadOption enumeration that indicates how rows already in the DataTable instances within the DataSet will be combined with incoming rows that share the same primary key.

tables
String[]

Load メソッドがテーブル名の情報を取得する、文字列の配列。An array of strings, from which the Load method retrieves table name information.

次のコンソールアプリケーションの例では、最初にテーブルを作成し、 DataSet メソッドを使用してリーダーからにデータを読み込み Load ます。The following Console application example first creates tables and loads data from a reader into a DataSet, using the Load method. 次に、テーブルをに追加 DataSet し、テーブルにデータを格納しようとし DataTableReader ます。The example then adds tables to a DataSet and attempts to fill the tables with data from a DataTableReader. この例では、メソッドに渡されたパラメーターが Load 存在しないテーブル名を示しているため、 Load メソッドはパラメーターとして渡された名前に一致する新しいテーブルを作成します。In this example, because the parameters passed to the Load method indicate a table name that does not exist, the Load method creates a new table to match the name passed as a parameter. データが読み込まれると、この例では、すべてのテーブルの内容がコンソールウィンドウに表示されます。Once the data has been loaded, the example displays the contents of all its tables in the Console window.

static void Main()
{
    DataSet dataSet = new DataSet();

    DataTableReader reader = GetReader();

    // The tables listed as parameters for the Load method
    // should be in the same order as the tables within the IDataReader.
    dataSet.Load(reader, LoadOption.Upsert, "Customers", "Products");
    foreach (DataTable table in dataSet.Tables)
    {
        PrintColumns(table);
    }

    // Now try the example with the DataSet
    // already filled with data:
    dataSet = new DataSet();
    dataSet.Tables.Add(GetCustomers());
    dataSet.Tables.Add(GetProducts());

    // Retrieve a data reader containing changed data:
    reader = GetReader();

    // Load the data into the existing DataSet. Retrieve the order of the
    // the data in the reader from the
    // list of table names in the parameters. If you specify
    // a new table name here, the Load method will create
    // a corresponding new table.
    dataSet.Load(reader, LoadOption.Upsert,
        "NewCustomers", "Products");
    foreach (DataTable table in dataSet.Tables)
    {
        PrintColumns(table);
    }

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

private static DataTable GetCustomers()
{
    // Create sample Customers table.
    DataTable table = new DataTable();
    table.TableName = "Customers";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Mary" });
    table.Rows.Add(new object[] { 1, "Andy" });
    table.Rows.Add(new object[] { 2, "Peter" });
    table.AcceptChanges();
    return table;
}

private static DataTable GetProducts()
{
    // Create sample Products table.
    DataTable table = new DataTable();
    table.TableName = "Products";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Wireless Network Card" });
    table.Rows.Add(new object[] { 1, "Hard Drive" });
    table.Rows.Add(new object[] { 2, "Monitor" });
    table.Rows.Add(new object[] { 3, "CPU" });
    table.AcceptChanges();
    return table;
}

private static void PrintColumns(DataTable table)
{
    Console.WriteLine();
    Console.WriteLine(table.TableName);
    Console.WriteLine("=========================");
    // Loop through all the rows in the table:
    foreach (DataRow row in table.Rows)
    {
        for (int i = 0; i < table.Columns.Count; i++)
        {
            Console.Write(row[i] + " ");
        }
        Console.WriteLine();
    }
}

private static DataTableReader GetReader()
{
    // Return a DataTableReader containing multiple
    // result sets, just for the sake of this demo.
    DataSet dataSet = new DataSet();
    dataSet.Tables.Add(GetCustomers());
    dataSet.Tables.Add(GetProducts());
    return dataSet.CreateDataReader();
}
Sub Main()
  Dim dataSet As New DataSet
  Dim table As DataTable

  Dim reader As DataTableReader = GetReader()

  ' The tables listed as parameters for the Load method 
  ' should be in the same order as the tables within the IDataReader.
  dataSet.Load(reader, LoadOption.Upsert, "Customers", "Products")
  For Each table In dataSet.Tables
    PrintColumns(table)
  Next

  ' Now try the example with the DataSet
  ' already filled with data:
  dataSet = New DataSet
  dataSet.Tables.Add(GetCustomers())
  dataSet.Tables.Add(GetProducts())

  ' Retrieve a data reader containing changed data:
  reader = GetReader()

  ' Load the data into the existing DataSet. Retrieve the order of the
  ' the data in the reader from the
  ' list of table names in the parameters. If you specify
  ' a new table name here, the Load method will create
  ' a corresponding new table.
  dataSet.Load(reader, LoadOption.Upsert, "NewCustomers", "Products")
  For Each table In dataSet.Tables
    PrintColumns(table)
  Next

  Console.WriteLine("Press any key to continue.")
  Console.ReadKey()
End Sub

Private Function GetCustomers() As DataTable
  ' Create sample Customers table.
  Dim table As New DataTable
  table.TableName = "Customers"

  ' Create two columns, ID and Name.
  Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
  table.Columns.Add("Name", GetType(String))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {0, "Mary"})
  table.Rows.Add(New Object() {1, "Andy"})
  table.Rows.Add(New Object() {2, "Peter"})
  table.AcceptChanges()
  Return table
End Function

Private Function GetProducts() As DataTable
  ' Create sample Products table, in order
  ' to demonstrate the behavior of the DataTableReader.
  Dim table As New DataTable
  table.TableName = "Products"

  ' Create two columns, ID and Name.
  Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
  table.Columns.Add("Name", GetType(String))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {0, "Wireless Network Card"})
  table.Rows.Add(New Object() {1, "Hard Drive"})
  table.Rows.Add(New Object() {2, "Monitor"})
  table.Rows.Add(New Object() {3, "CPU"})
  Return table
End Function

Private Function GetReader() As DataTableReader
  ' Return a DataTableReader containing multiple
  ' result sets, just for the sake of this demo.
  Dim dataSet As New DataSet
  dataSet.Tables.Add(GetCustomers())
  dataSet.Tables.Add(GetProducts())
  Return dataSet.CreateDataReader()
End Function

Private Sub PrintColumns( _
   ByVal table As DataTable)

  Console.WriteLine()
  Console.WriteLine(table.TableName)
  Console.WriteLine("=========================")
  ' Loop through all the rows in the table.
  For Each row As DataRow In table.Rows
    For Each col As DataColumn In table.Columns
      Console.Write(row(col).ToString() & " ")
    Next
    Console.WriteLine()
  Next
End Sub

注釈

メソッドは、 Load 1 つのにデータを格納するための手法を提供し DataTable 、インスタンスから取得し IDataReader ます。The Load method provides a technique for filling a single DataTable with data, retrieved from an IDataReader instance. このメソッドは同じ機能を提供しますが、から複数の結果セットを内の複数のテーブルに読み込むことができ IDataReader DataSet ます。This method provides the same functionality, but allows you to load multiple result sets from an IDataReader into multiple tables within a DataSet.

注意

InvalidOperationException受信したのいずれかのソースデータ列が計算列の場合、読み込み操作はで失敗し reader ます。The load operation will fail with an InvalidOperationException if any of the source data columns in the incoming reader are computed columns.

パラメーターを使用すると、インポートした loadOption データが既存のデータとどのように対話するかを指定できます。また、列挙体のいずれかの値を指定することもでき LoadOption ます。The loadOption parameter allows you to specify how you want the imported data to interact with existing data, and can be any of the values from the LoadOption enumeration. Loadこのパラメーターの使用方法の詳細については、メソッドのドキュメントを参照してください。See the documentation for the Load method for more information on using this parameter.

tablesパラメーターを使用すると、リーダーから読み込まれた各結果セットに対応するテーブルの順序を示す、テーブル名の配列を指定できます。The tables parameter allows you to specify an array of table names, indicating the order of the tables corresponding to each result set loaded from the reader. メソッドは、 Load DataSet テーブル名の配列で見つかった名前と一致する内のテーブルを順に検索しようとします。The Load method attempts to find a table within the DataSet matching the name found in the array of table names, in order. 一致するテーブルが見つかった場合、そのテーブルは現在の結果セットの内容と共に読み込まれます。If a matching table is found, that table is loaded with the content of the current result set. 一致するテーブルが見つからない場合は、テーブル名の配列に指定された名前を使用してテーブルが作成され、新しいテーブルのスキーマが結果セットから推論されます。If no matching table is found, a table is created using the name supplied in the array of table names, and the new table's schema is inferred from the result set. 各結果セットの後、メソッドは、結果セットが Load なくなるまで、リーダー内の次の結果セットに移動します。After each result set, the Load method moves on to the next result set within the reader, until there are no more result sets.

に関連付けられた既定の名前空間 DataSet (存在する場合) は、新しく作成された各に関連付けられ DataTable ます。The default namespace associated with DataSet, if any, is associated with each newly created DataTable. このメソッドの名前解決スキームは、その後にクラスのメソッドが続くものと同じです Fill DbDataAdapterThe name resolution scheme for this method is the same as that followed by the Fill method of the DbDataAdapter class.

こちらもご覧ください

適用対象

Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[])

指定した DataSet を使用するデータ ソースの値を IDataReader に格納し、DataTable インスタンスの配列を使用してスキーマ情報と名前空間情報を指定します。Fills a DataSet with values from a data source using the supplied IDataReader, using an array of DataTable instances to supply the schema and namespace information.

public:
 virtual void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, System::Data::FillErrorEventHandler ^ errorHandler, ... cli::array <System::Data::DataTable ^> ^ tables);
public virtual void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, System.Data.FillErrorEventHandler? errorHandler, params System.Data.DataTable[] tables);
public virtual void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, System.Data.FillErrorEventHandler errorHandler, params System.Data.DataTable[] tables);
abstract member Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.FillErrorEventHandler * System.Data.DataTable[] -> unit
override this.Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.FillErrorEventHandler * System.Data.DataTable[] -> unit
Public Overridable Sub Load (reader As IDataReader, loadOption As LoadOption, errorHandler As FillErrorEventHandler, ParamArray tables As DataTable())

パラメーター

reader
IDataReader

1 つ以上の結果セットを含む IDataReaderAn IDataReader that provides one or more result sets.

loadOption
LoadOption

LoadOption 列挙体の値。DataTable 内の DataSet インスタンスに既に含まれている行を同じ主キーを持つ受信した行と結合する方法を示します。A value from the LoadOption enumeration that indicates how rows already in the DataTable instances within the DataSet will be combined with incoming rows that share the same primary key.

errorHandler
FillErrorEventHandler

データの読み込み中にエラーが発生した場合に呼び出される FillErrorEventHandler デリゲート。A FillErrorEventHandler delegate to call when an error occurs while loading data.

tables
DataTable[]

DataTable メソッドが名前と名前空間の情報を取得する、Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[]) インスタンスの配列。An array of DataTable instances, from which the Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[]) method retrieves name and namespace information.

次の例では、にテーブルを追加し、 DataSet メソッドを使用して LoadDataTableReader 互換性のないスキーマを含むからデータを読み込みます。The following example adds a table to a DataSet, and then attempts to use the Load method to load data from a DataTableReader that contains an incompatible schema. この例では、エラーをトラップするのではなく、デリゲートを使用して FillErrorEventHandler エラーを調査して処理します。Rather than trapping the error, this example uses a FillErrorEventHandler delegate to investigate and handle the error. 出力がコンソールウィンドウに表示されます。The output is displayed in the console window.

static void Main()
{
    // Attempt to load data from a data reader in which
    // the schema is incompatible with the current schema.
    // If you use exception handling, you won't get the chance
    // to examine each row, and each individual table,
    // as the Load method progresses.
    // By taking advantage of the FillErrorEventHandler delegate,
    // you can interact with the Load process as an error occurs,
    // attempting to fix the problem, or simply continuing or quitting
    // the Load process.:
    DataSet dataSet = new DataSet();
    DataTable table = GetIntegerTable();
    dataSet.Tables.Add(table);
    DataTableReader reader = new DataTableReader(GetStringTable());
    dataSet.Load(reader, LoadOption.OverwriteChanges,
        FillErrorHandler, table);

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

private static DataTable GetIntegerTable()
{
    // Create sample Customers table, in order
    // to demonstrate the behavior of the DataTableReader.
    DataTable table = new DataTable();

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 4 });
    table.Rows.Add(new object[] { 5 });
    table.AcceptChanges();
    return table;
}

private static DataTable GetStringTable()
{
    // Create sample Customers table, in order
    // to demonstrate the behavior of the DataTableReader.
    DataTable table = new DataTable();

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { "Mary" });
    table.Rows.Add(new object[] { "Andy" });
    table.Rows.Add(new object[] { "Peter" });
    table.AcceptChanges();
    return table;
}

static void FillErrorHandler(object sender, FillErrorEventArgs e)
{
    // You can use the e.Errors value to determine exactly what
    // went wrong.
    if (e.Errors.GetType() == typeof(System.FormatException))
    {
        Console.WriteLine("Error when attempting to update the value: {0}",
            e.Values[0]);
    }

    // Setting e.Continue to True tells the Load
    // method to continue trying. Setting it to False
    // indicates that an error has occurred, and the
    // Load method raises the exception that got
    // you here.
    e.Continue = true;
}
Sub Main()
  Dim dataSet As New DataSet
  Dim table As New DataTable()

  ' Attempt to load data from a data reader in which
  ' the schema is incompatible with the current schema.
  ' If you use exception handling, you won't get the chance
  ' to examine each row, and each individual table,
  ' as the Load method progresses.
  ' By taking advantage of the FillErrorEventHandler delegate,
  ' you can interact with the Load process as an error occurs,
  ' attempting to fix the problem, or simply continuing or quitting
  ' the Load process.:
  dataSet = New DataSet()
  table = GetIntegerTable()
  dataSet.Tables.Add(table)
  Dim reader As New DataTableReader(GetStringTable())
  dataSet.Load(reader, LoadOption.OverwriteChanges, _
      AddressOf FillErrorHandler, table)

  Console.WriteLine("Press any key to continue.")
  Console.ReadKey()
End Sub

Private Sub FillErrorHandler(ByVal sender As Object, _
  ByVal e As FillErrorEventArgs)
  ' You can use the e.Errors value to determine exactly what
  ' went wrong.
  If e.Errors.GetType Is GetType(System.FormatException) Then
    Console.WriteLine("Error when attempting to update the value: {0}", _
      e.Values(0))
  End If

  ' Setting e.Continue to True tells the Load
  ' method to continue trying. Setting it to False
  ' indicates that an error has occurred, and the 
  ' Load method raises the exception that got 
  ' you here.
  e.Continue = True
End Sub

Private Function GetIntegerTable() As DataTable
  ' Create sample table with a single Int32 column.
  Dim table As New DataTable

  Dim idColumn As DataColumn = table.Columns.Add("ID", _
      GetType(Integer))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {4})
  table.Rows.Add(New Object() {5})
  table.TableName = "IntegerTable"
  table.AcceptChanges()
  Return table
End Function

Private Function GetStringTable() As DataTable
  ' Create sample table with a single String column.
  Dim table As New DataTable

  Dim idColumn As DataColumn = table.Columns.Add("ID", _
      GetType(String))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {"Mary"})
  table.Rows.Add(New Object() {"Andy"})
  table.Rows.Add(New Object() {"Peter"})
  table.AcceptChanges()
  Return table
End Function

Private Sub PrintColumns( _
   ByVal table As DataTable)

  ' Loop through all the rows in the DataTableReader.
  For Each row As DataRow In table.Rows
    For Each col As DataColumn In table.Columns
      Console.Write(row(col).ToString() & " ")
    Next
    Console.WriteLine()
  Next
End Sub

注釈

メソッドは、 Load 1 つのにデータを格納するための手法を提供し DataTable 、インスタンスから取得し IDataReader ます。The Load method provides a technique for filling a single DataTable with data, retrieved from an IDataReader instance. このメソッドは同じ機能を提供しますが、から複数の結果セットを内の複数のテーブルに読み込むことができ IDataReader DataSet ます。This method provides the same functionality, but allows you to load multiple result sets from an IDataReader into multiple tables within a DataSet.

注意

InvalidOperationException受信したのいずれかのソースデータ列が計算列の場合、読み込み操作はで失敗し reader ます。The load operation will fail with an InvalidOperationException if any of the source data columns in the incoming reader are computed columns.

パラメーターを使用すると、インポートした loadOption データが既存のデータとどのように対話するかを指定できます。また、列挙体のいずれかの値を指定することもでき LoadOption ます。The loadOption parameter allows you to specify how you want the imported data to interact with existing data, and can be any of the values from the LoadOption enumeration. DataTable Load このパラメーターの使用方法の詳細については、メソッドのドキュメントを参照してください。See the documentation for the DataTableLoad method for more information on using this parameter.

errorHandlerパラメーターは、 FillErrorEventHandler データの読み込み中にエラーが発生したときに呼び出されるプロシージャを参照するデリゲートです。The errorHandler parameter is a FillErrorEventHandler delegate that refers to a procedure that is called when an error occurs while loading data. プロシージャに渡されるパラメーターには、発生した FillErrorEventArgs エラー、データの現在の行、および格納されているの情報を取得するためのプロパティが用意されて DataTable います。The FillErrorEventArgs parameter passed to the procedure provides properties that allow you to retrieve information about the error that occurred, the current row of data, and the DataTable being filled. より単純な try/catch ブロックではなく、このデリゲートメカニズムを使用すると、エラーを特定し、状況を処理し、必要に応じて処理を続行できます。Using this delegate mechanism, rather than a simpler try/catch block, allows you to determine the error, handle the situation, and continue processing if you like. パラメーターは、 FillErrorEventArgs Continue プロパティを指定します。このプロパティをに設定して、エラーを処理し、 true 処理を続行することを示します。プロパティをに設定して、 false 処理を停止することを指定します。The FillErrorEventArgs parameter supplies a Continue property: set this property to true to indicate that you have handled the error and wish to continue processing; set the property to false to indicate that you wish to halt processing. プロパティをに設定すると、 false 問題を発生させたコードが例外をスローすることに注意してください。Be aware that setting the property to false causes the code that triggered the problem to throw an exception.

tablesパラメーターを使用すると DataTable 、リーダーから読み込まれた各結果セットに対応するテーブルの順序を示す、インスタンスの配列を指定できます。The tables parameter allows you to specify an array of DataTable instances, indicating the order of the tables corresponding to each result set loaded from the reader. メソッドは、指定された LoadDataTable インスタンスに、ソースデータリーダーからの1つの結果セットのデータを格納します。The Load method fills each supplied DataTable instance with data from a single result set from the source data reader. 各結果セットの後、メソッドは、結果セットが Load なくなるまで、リーダー内の次の結果セットに移動します。After each result set, the Load method moves on to the next result set within the reader, until there are no more result sets.

このメソッドの名前解決スキームは、その後にクラスのメソッドが続くものと同じです Fill DbDataAdapterThe name resolution scheme for this method is the same as that followed by the Fill method of the DbDataAdapter class.

こちらもご覧ください

適用対象