Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe der Load-Methode kann eine DataTable mit Zeilen aus einer Datenquelle geladen werden. Dies ist eine überladene Methode, die in ihrer einfachsten Form einen einzelnen Parameter, einen DataReader, akzeptiert. In diesem Formular lädt es einfach die Zeilen in DataTable. Optional können Sie den LoadOption Parameter angeben, um zu steuern, wie Daten zur DataTable hinzugefügt werden.
Der LoadOption Parameter ist besonders nützlich in Fällen, in denen die DataTable bereits Datenzeilen enthalten, da es beschreibt, wie eingehende Daten aus der Datenquelle mit den bereits in der Tabelle enthaltenen Daten kombiniert werden. Beispielsweise gibt PreserveCurrentValues (Standardeinstellung) an, dass in den Fällen, in denen eine Zeile in der DataTable als Added markiert ist, der Original-Wert oder jede Spalte auf den Inhalt der übereinstimmenden Zeile aus der Datenquelle festgelegt wird. Der Current Wert behält die Beim Hinzufügen der Zeile zugewiesenen Werte bei, und die RowState Zeile wird auf "Geändert" festgelegt.
Die folgende Tabelle enthält eine kurze Beschreibung der LoadOption-Enumerationswerte.
| Der LoadOption-Wert | Beschreibung |
|---|---|
| OverwriteRow | Wenn eingehende Zeilen den gleichen PrimaryKey Wert wie eine Zeile haben, die sich bereits in der DataTable befindet, werden die Original Werte Current der einzelnen Spalten durch die Werte in der eingehenden Zeile ersetzt, und die RowState Eigenschaft wird auf "Unverändert" festgelegt.Zeilen aus der Datenquelle, die noch nicht in DataTable vorhanden sind, werden mit dem RowState Wert „Unverändert“ hinzugefügt.Durch diese Option wird der Inhalt des DataTable tatsächlich aktualisiert, um mit dem Inhalt der Datenquelle übereinzustimmen. |
| PreserveCurrentValues (Standard) | Wenn eingehende Zeilen denselben PrimaryKey Wert wie eine Zeile haben, die sich bereits in der DataTable befindet, wird der Original Wert auf den Inhalt der eingehenden Zeile festgelegt, und der Current Wert wird nicht geändert.Wenn die Eigenschaft RowState auf Added oder Geändert geändert wird, wird sie auf Geändert gesetzt.Wenn das RowStategelöscht wurde, bleibt es gelöscht.Zeilen aus der Datenquelle, die noch nicht in der DataTable Datenquelle vorhanden sind, werden hinzugefügt, und der RowState Wert wird auf "Unverändert" festgelegt. |
| UpdateCurrentValues | Wenn eingehende Zeilen denselben PrimaryKey Wert wie die Zeile haben, die sich bereits in der DataTable befindet, wird der Current Wert in den Original Wert kopiert, und der Current Wert wird dann auf den Inhalt der eingehenden Zeile festgelegt.Wenn das RowState im DataTablehinzugefügt wurde, bleibt das RowStatehinzugefügt. Bei Zeilen, die als Modified oder gelöscht markiert sind, wird die RowStateEigenschaft geändert.Zeilen aus der Datenquelle, die in DataTable noch nicht vorhanden sind, werden hinzugefügt, und der RowState wird auf Hinzugefügt festgelegt. |
Im folgenden Beispiel wird die Load Methode verwendet, um eine Liste der Geburtstage für die Mitarbeiter in der Northwind Datenbank anzuzeigen.
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