Die 'Load'-Methode

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 dieser Form lädt sie einfach die DataTable mit Zeilen. Optional können Sie den LoadOption-Parameter angeben, um zu steuern, wie der DataTable die Daten hinzugefügt werden.

Der LoadOption-Parameter ist besonders in den Fällen nützlich, in denen die DataTable bereits Zeilen mit Daten enthält, weil durch den Parameter beschrieben wird, wie die eingehenden Daten aus der Datenquelle mit den bereits in der Tabelle vorhandenen Daten kombiniert werden. Beispielsweise wird durch den Standardwert PreserveCurrentValues angegeben, dass dann, wenn eine Zeile als Added in der DataTable markiert ist, der Original-Wert jeder Spalte auf den Inhalt der entsprechenden Zeile aus der Datenquelle festgelegt wird. Der Current-Wert behält die Werte bei, die ihm beim Hinzufügen der Zeile zugewiesen wurden, und der RowState der Zeile wird auf Changed festgelegt.

Die folgende Tabelle enthält eine kurze Beschreibung der LoadOption-Enumerationswerte.

Der LoadOption-Wert

Beschreibung

OverwriteRow

Wenn hinzukommende Zeilen denselben PrimaryKey-Wert wie eine bereits in der DataTable vorhandene Zeile aufweisen, werden der Original-Wert und der Current-Wert jeder Spalte durch die Werte in der hinzukommenden Zeile ersetzt, und die RowState-Eigenschaft wird auf Unchanged festgelegt.

Zeilen aus einer Datenquelle, die in der DataTable noch nicht vorhanden sind, werden mit dem RowState-Wert Unchanged hinzugefügt.

Mit dieser Option wird der Inhalt der DataTable aktualisiert, sodass er mit dem Inhalt der Datenquelle übereinstimmt.

PreserveCurrentValues (Standard)

Wenn hinzukommende Zeilen denselben PrimaryKey-Wert wie eine bereits in der DataTable vorhandene Zeile aufweisen, wird der Original-Wert auf den Inhalt der hinzukommenden Zeile festgelegt, und der Current-Wert wird nicht geändert.

Wenn der RowState den Wert Added oder den Wert Modified aufweist, wird er auf Modified festgelegt.

Wenn der RowState den Wert Deleted besitzt, bleibt er Deleted.

Zeilen aus einer Datenquelle, die in der DataTable noch nicht vorhanden sind, werden hinzugefügt, und der RowState-Wert wird auf Unchanged festgelegt.

UpdateCurrentValues

Wenn hinzukommende Zeilen denselben PrimaryKey-Wert wie die bereits in der DataTable vorhandene Zeile aufweisen, wird der Current-Wert in den Original-Wert kopiert, und der Current-Wert wird anschließend auf den Inhalt der hinzukommenden Zeile festgelegt.

Wenn der RowState in der DataTable den Wert Added aufwies, wird für den RowState der Wert Added beibehalten. Für Zeilen mit der Markierung Modified oder Deleted lautet der RowState Modified.

Zeilen aus einer Datenquelle, die in der DataTable noch nicht vorhanden sind, werden hinzugefügt, und der RowState-Wert wird auf Added festgelegt.

Im folgenden Beispiel wird mit der Load-Methode eine Geburtstagsliste der Mitarbeiter in der Northwind-Datenbank angezeigt.

[Visual Basic]

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

Siehe auch

Weitere Ressourcen

Bearbeiten von Daten in einer DataTable