Dela via


Metoden Load

Du kan använda Load metoden för att läsa in en DataTable med rader från en datakälla. Det här är en överbelastad metod som i sin enklaste form accepterar en enda parameter, en DataReader. I det här formuläret läser den helt enkelt in DataTable med rader. Du kan också ange parametern LoadOption för att styra hur data läggs till i DataTable.

Parametern LoadOption är särskilt användbar i fall där DataTable redan innehåller rader med data, eftersom den beskriver hur inkommande data från datakällan kombineras med data som redan finns i tabellen. Till exempel anger PreserveCurrentValues (standardvärdet) att i fall där en rad är markerad som Lägg till i DataTable anges originalvärdet eller varje kolumn till innehållet i den matchande raden från datakällan. Värdet Aktuell behåller de värden som tilldelades när raden lades till och raden RowState anges till Ändrad.

I följande tabell ges en kort beskrivning av uppräkningsvärdena LoadOption .

LoadOption-värde beskrivning
OverwriteRow Om inkommande rader redan har samma PrimaryKey-värde som en rad i DataTable ersätts värdena Original och Current för varje kolumn med värdena i den inkommande raden, och egenskapen RowState är inställd på Oförändrad.

Rader från datakällan som inte redan finns i DataTable läggs till med värdet RowState oförändrat.

Det här alternativet uppdaterar i själva verket innehållet i DataTable så att det matchar innehållet i datakällan.
PreserveCurrentValues (standard) Om inkommande rader redan har samma PrimaryKey-värde som en rad i DataTable anges originalvärdet till innehållet i den inkommande raden och värdet Aktuell ändras inte.

Om RowState har lagts till eller ändrats är den inställd på Ändrad.

Om RowState har tagits bort förblir den Borttagen.

Rader från datakällan som inte redan finns i DataTable läggs till och RowState är inställt på Oförändrad.
UpdateCurrentValues Om inkommande rader har samma PrimaryKey-värde som raden som redan finns i DataTable kopieras värdet Aktuellt till originalvärdet och värdet Aktuellt anges sedan till innehållet i den inkommande raden.

Om RowState i DataTable lades till förblir RowState tillagd. För rader som har markerats som Ändrade eller Borttagna ändras RowState.

Rader från datakällan som inte redan finns i DataTable läggs till och RowState har angetts till Lägg till.

I följande exempel används metoden Load för att visa en lista över födelsedagar för de anställda i Northwind-databasen .

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

Se även