Метод LoadThe Load Method

Метод Load используется для загрузки в таблицу DataTable строк из источника данных.You can use the Load method to load a DataTable with rows from a data source. Это перегруженный метод, который в простейшей форме принимает один параметр — DataReader.This is an overloaded method which, in its simplest form, accepts a single parameter, a DataReader. В этой форме он просто загружает таблицу данных DataTable со строками.In this form, it simply loads the DataTable with rows. При необходимости можно указать параметр loadOption для управления добавлением данных в таблицу DataTable.Optionally, you can specify the LoadOption parameter to control how data is added to the DataTable.

Параметр loadOption особенно полезен в случаях, когда объект DataTable уже содержит строки данных, поскольку он описывает, как входящие данные из источника данных будут объединены с данными, уже находящихся в таблице.The LoadOption parameter is particularly useful in cases where the DataTable already contains rows of data, because it describes how incoming data from the data source will be combined with the data already in the table. Например, пресервекуррентвалуес (значение по умолчанию) указывает, что в случаях, когда строка помечена как добавленная в таблицу данных, исходное значение или каждый столбец задается в соответствии с содержимым соответствующей строки из источника.For example, PreserveCurrentValues (the default) specifies that in cases where a row is marked as Added in the DataTable, the Original value or each column is set to the contents of the matching row from the data source. Текущее значение будет хранить значения, назначенные при добавлении строки, а RowState строки будет изменено.The Current value will retain the values assigned when the row was added, and the RowState of the row will be set to Changed.

В следующей таблице приведено краткое описание значений перечисления LoadOption.The following table gives a short description of the LoadOption enumeration values.

Значение LoadOptionLoadOption value ОписаниеDescription
OverwriteRowOverwriteRow Если входящие строки имеют то же значение PrimaryKey , что и строка, уже находящиеся в DataTable, то исходные и текущие значения каждого столбца заменяются значениями во входной строке, а для свойства RowState устанавливается значение без изменений.If incoming rows have the same PrimaryKey value as a row already in the DataTable, the Original and Current values of each column are replaced with the values in the incoming row, and the RowState property is set to Unchanged.

Строки из источника данных, которые еще не существуют в DataTable , добавляются со значением RowState без изменений.Rows from the data source that do not already exist in the DataTable are added with a RowState value of Unchanged.

Этот параметр в силе обновляет содержимое таблицы DataTable , чтобы оно соответствовало содержимому источника данных.This option in effect refreshes the contents of the DataTable so that it matches the contents of the data source.
PreserveCurrentValues (значение по умолчанию)PreserveCurrentValues (default) Если входящие строки имеют то же значение PrimaryKey , что и строка, уже находящиеся в DataTable, то исходное значение устанавливается на содержимое входящей строки, а Текущее значение не изменяется.If incoming rows have the same PrimaryKey value as a row already in the DataTable, the Original value is set to the contents of the incoming row, and the Current value is not changed.

При добавлении или изменении RowState оно изменяется на изменено.If the RowState is Added or Modified, it is set to Modified.

Если параметр RowState удален, он остается удаленным.If the RowState was Deleted, it remains Deleted.

Строки из источника данных, которые еще не существуют в DataTable , добавляются, а для RowState устанавливается значение без изменений.Rows from the data source that do not already exist in the DataTable are added, and the RowState is set to Unchanged.
UpdateCurrentValuesUpdateCurrentValues Если входящие строки имеют то же значение PrimaryKey , что и строка, уже находящиеся в DataTable, Текущее значение копируется в исходное значение, а Текущее значение затем устанавливается в содержимое входящей строки.If incoming rows have the same PrimaryKey value as the row already in the DataTable, the Current value is copied to the Original value, and the Current value is then set to the contents of the incoming row.

Если свойство RowState в таблице DataTable было добавлено, то свойство RowState остается добавленным.If the RowState in the DataTable was Added, the RowState remains Added. Для строк, помеченных как измененные или Удаленные, свойство RowState изменяется.For rows marked as Modified or Deleted, the RowState is Modified.

Строки из источника данных, которые еще не существуют в DataTable , добавляются, а для свойства RowState устанавливается значение added.Rows from the data source that do not already exist in the DataTable are added, and the RowState is set to Added.

В следующем примере метод Load используется для вывода списка дней рождения сотрудников в базе данных Northwind .The following sample uses the Load method to display a list of birthdays for the employees in the Northwind database.

Private Sub LoadBirthdays(ByVal connectionString As String)  
    ' Assumes that connectionString is a valid connection string  
    ' to the Northwind database on SQL Server.  
    Dim queryString As String = _  
    "SELECT LastName, FirstName, BirthDate " & _  
      " FROM dbo.Employees " & _  
      "ORDER BY BirthDate, LastName, FirstName"  
  
    ' Open and fill a DataSet.
    Dim adapter As SqlDataAdapter = New SqlDataAdapter( _  
        queryString, connectionString)  
    Dim employees As New DataSet  
    adapter.Fill(employees, "Employees")  
  
    ' Create a SqlDataReader for use with the Load Method.  
    Dim reader As DataTableReader = employees.GetDataReader()  
  
    ' Create an instance of DataTable and assign the first  
    ' DataTable in the DataSet.Tables collection to it.  
    Dim dataTableEmp As DataTable = employees.Tables(0)  
  
    ' Fill the DataTable with data by calling Load and  
    ' passing the SqlDataReader.  
    dataTableEmp.Load(reader, LoadOption.OverwriteRow)  
  
    ' Loop through the rows collection and display the values  
    ' in the console window.  
    Dim employeeRow As DataRow  
    For Each employeeRow In dataTableEmp.Rows  
        Console.WriteLine("{0:MM\\dd\\yyyy}" & ControlChars.Tab & _  
          "{1}, {2}", _  
          employeeRow("BirthDate"), _  
          employeeRow("LastName"), _  
          employeeRow("FirstName"))  
    Next employeeRow  
  
    ' Keep the window opened to view the contents.  
    Console.ReadLine()  
End Sub  

См. такжеSee also