Метод Load

Метод Load используется для загрузки в таблицу DataTable строк из источника данных. Это перегруженный метод, который в самой простой форме принимает один параметр DataReader. В этой форме она просто загружает DataTable со строками. При необходимости можно указать параметр LoadOption для управления добавлением данных в DataTable.

Параметр LoadOption особенно полезен в тех случаях, когда DataTable уже содержит строки данных, так как он описывает, как входящие данные из источника данных будут объединены с данными, уже в таблице. Например, PreserveCurrentValues (по умолчанию) указывает, что в случаях, когда строка помечена как добавленная в DataTable, исходное значение или каждый столбец задается содержимое соответствующей строки из источника данных. Текущеезначение будет хранить значения, назначенные при добавлении строки, и RowState строки будет иметь значение "Изменить".

В следующей таблице приведено краткое описание значений перечисления LoadOption.

Значение LoadOption Description
ПерезаписьRow Если входящие строки имеют то же значение PrimaryKey , что и строка, уже в DataTable, исходные и текущие значения каждого столбца заменяются значениями входящей строке, а свойство RowState имеет значение "Без изменений".

Строки из источника данных, которые еще не существуют в DataTable, добавляются со значением RowState без изменений.

Этот параметр фактически обновляет содержимое DataTable , чтобы оно соответствовало содержимому источника данных.
PreserveCurrentValues (по умолчанию) Если входящие строки имеют то же значение PrimaryKey , что и строка, уже в DataTable, исходное значение присваивается содержимому входящей строки, а текущее значение не изменяется.

Если параметр RowState добавлен или изменен, он имеет значение "Изменить".

Если rowState был удален, он остается удаленным.

Добавлены строки из источника данных, которые еще не существуют в DataTable, и RowState имеет значение "Без изменений".
UpdateCurrentValues Если входящие строки имеют то же значение PrimaryKey , что и строка, уже в DataTable, текущее значение копируется в исходное значение, а текущее значение затем присваивается содержимому входящей строки.

Если значение RowState в DataTable было добавлено, значение RowState остается добавленным. Для строк, помеченных как "Изменено" или "Удалено", значение RowState изменяется.

Добавлены строки из источника данных, которые еще не существуют в DataTable , и параметр RowState имеет значение Added.

В следующем примере используется метод Load для отображения списка дней рождения сотрудников в базе данных Northwind .

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  

См. также