Поделиться через


Метод "Load"

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

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

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

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

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

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

RowState Если задано значение "AddedИзменено" или "Изменено", оно имеет значение "Изменить".

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

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

Если элемент RowState был DataTable, то остается RowState. Для строк, отмеченных как Modified или Удаленные, 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

См. также