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.

Комментарии

Метод предоставляет способ заполнения одного DataTable с IDataReader данными, полученными из экземпляра. LoadThe 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.

Метод может использоваться в нескольких распространенных сценариях, по центру, по которому происходит получение данных из указанного источника данных и их добавление в текущий контейнер данных (в данном случае DataSet—). LoadThe 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 Выполняет синхронизацию или обновление с одним первичным источником данных.A DataSet synchronizes or updates with a single primary data source. Изменения DataSet отслеживаются, что позволяет синхронизироваться с первичным источником данных.The DataSet tracks changes, allowing synchronization with the primary data source. Кроме того DataSet , может принимать добавочные данные из одного или нескольких вторичных источников данных.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.

Учитывая эти два гипотетических источника данных, пользователю, скорее всего, потребуется одно из следующих поведений: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. Изменилось одно или несколько содержимого 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. В этом сценарии пользователь хочет объединить изменения из одного или нескольких вторичных источников данных и распространить эти изменения обратно в первичный источник данных.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. В следующей таблице описаны три параметра загрузки, предоставляемые 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.

Параметр LoadLoad 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 Параметр упрощает статистическую обработку изменений из одного или нескольких вторичных источников данных.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

Параметры

reader
IDataReader

Объект IDataReader, предоставляющий один или несколько наборов результатов.An 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следующем примере создается новый объект, в него DataTable DataSetдобавляются два экземпляра, а затем заполняется DataSet с Load помощью метода, извлекаются данные 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

Комментарии

Метод предоставляет способ заполнения одного DataTable с IDataReader данными, полученными из экземпляра. LoadThe 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 перечисления. loadOptionThe 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.

Параметр позволяет указать DataTable массив экземпляров, указывающий порядок таблиц, соответствующих каждому результирующему набору, загруженному из модуля чтения. tablesThe 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. Метод заполняет каждый переданный DataTable экземпляр данными из одного результирующего набора из модуля чтения исходных данных. LoadThe 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 метод DbDataAdapter класса.The 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

Параметры

reader
IDataReader

Объект IDataReader, предоставляющий один или несколько наборов результатов.An 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

Комментарии

Метод предоставляет способ заполнения одного DataTable с IDataReader данными, полученными из экземпляра. LoadThe 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 перечисления. loadOptionThe 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. Метод пытается найти таблицу DataSet в соответствии с именем, найденным в массиве имен таблиц по порядку. LoadThe 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 метод DbDataAdapter класса.The 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);
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

Параметры

reader
IDataReader

Объект IDataReader, предоставляющий один или несколько наборов результатов.An 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, а затем пытается Load использовать метод DataTableReader для загрузки данных из, содержащего несовместимую схему.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

Комментарии

Метод предоставляет способ заполнения одного DataTable с IDataReader данными, полученными из экземпляра. LoadThe 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 перечисления. loadOptionThe 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. Параметр, передаваемый в процедуру, предоставляет свойства, позволяющие получить сведения о произошедшей ошибке, текущей строке данных и заполняемом элементе DataTable. FillErrorEventArgsThe 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. Параметр предоставляет свойство: установите false это свойство взначение,чтобыуказать,чтовыобработалиошибкуихотитепродолжитьобработку;задайтедлясвойствазначение,чтобыуказать,чтонеобходимоостановитьобработку.true Continue FillErrorEventArgsThe 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.

Параметр позволяет указать DataTable массив экземпляров, указывающий порядок таблиц, соответствующих каждому результирующему набору, загруженному из модуля чтения. tablesThe 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. Метод заполняет каждый переданный DataTable экземпляр данными из одного результирующего набора из модуля чтения исходных данных. LoadThe 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 метод DbDataAdapter класса.The name resolution scheme for this method is the same as that followed by the Fill method of the DbDataAdapter class.

Дополнительно

Применяется к