Метод 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