Udostępnij za pośrednictwem


Metoda Load

Możesz użyć Load metody , aby załadować element DataTable z wierszami ze źródła danych. Jest to metoda przeciążona, która w najprostszej postaci akceptuje pojedynczy parametr DataReader. W tym formularzu po prostu ładuje tabelę DataTable z wierszami. Opcjonalnie możesz określić parametr LoadOption , aby kontrolować sposób dodawania danych do tabeli DataTable.

Parametr LoadOption jest szczególnie przydatny w przypadkach, gdy tabela DataTable zawiera już wiersze danych, ponieważ opisuje sposób łączenia danych przychodzących ze źródła danych z danymi już w tabeli. Na przykład preserveCurrentValues (wartość domyślna) określa, że w przypadkach, gdy wiersz jest oznaczony jako Dodany w tabeli DataTable, wartość Oryginalna lub każda kolumna jest ustawiona na zawartość pasującego wiersza ze źródła danych. Wartość Bieżąca zachowa wartości przypisane podczas dodawania wiersza, a właściwość RowState wiersza zostanie ustawiona na Wartość Zmieniono.

Poniższa tabela zawiera krótki opis LoadOption wartości wyliczenia.

Wartość LoadOption opis
Zastępowanie elementuRow Jeśli wiersze przychodzące mają tę samą wartość PrimaryKey co wiersz już w tabeli DataTable, wartości Oryginalne i Bieżące każdej kolumny są zastępowane wartościami w wierszu przychodzącym, a właściwość RowState jest ustawiona na Niezmienione.

Wiersze ze źródła danych, które nie istnieją jeszcze w tabeli DataTable , są dodawane z wartością RowState bez zmian.

Ta opcja powoduje odświeżenie zawartości tabeli DataTable tak, aby była zgodna z zawartością źródła danych.
PreserveCurrentValues (wartość domyślna) Jeśli wiersze przychodzące mają taką samą wartość PrimaryKey jak wiersz już w tabeli DataTable, wartość Oryginalna jest ustawiona na zawartość wiersza przychodzącego, a wartość Bieżąca nie zostanie zmieniona.

Jeśli właściwość RowState jest dodawana lub modyfikowana, jest ustawiona na Wartość Zmodyfikowano.

Jeśli element RowState został usunięty, pozostanie usunięty.

Dodano wiersze ze źródła danych, które jeszcze nie istnieją w tabeli DataTable , a właściwość RowState jest ustawiona na bez zmian.
UpdateCurrentValues Jeśli wiersze przychodzące mają tę samą wartość PrimaryKey co wiersz już w tabeli DataTable, wartość Bieżąca jest kopiowana do wartości oryginalnej , a wartość Bieżąca jest następnie ustawiona na zawartość wiersza przychodzącego.

Jeśli element RowState w tabeli DataTable został dodany, element RowState pozostanie dodany. W przypadku wierszy oznaczonych jako Zmodyfikowane lub Usunięte, element RowState jest modyfikowany.

Dodano wiersze ze źródła danych, które jeszcze nie istnieją w tabeli DataTable , a właściwość RowState ma wartość Dodano.

W poniższym przykładzie użyto metody Load, aby wyświetlić listę urodzin dla pracowników w bazie danych 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

Zobacz też