De methode Laden
U kunt de Load methode gebruiken om een DataTable met rijen uit een gegevensbron te laden. Dit is een overbelaste methode die, in de eenvoudigste vorm, één parameter accepteert, een DataReader. In dit formulier wordt eenvoudigweg de gegevenstabel geladen met rijen. U kunt desgewenst de parameter LoadOption opgeven om te bepalen hoe gegevens worden toegevoegd aan de gegevenstabel.
De parameter LoadOption is met name handig in gevallen waarin de gegevenstabel al rijen met gegevens bevat, omdat hierin wordt beschreven hoe binnenkomende gegevens uit de gegevensbron worden gecombineerd met de gegevens die al in de tabel staan. Zo geeft PreserveCurrentValues (de standaardinstelling) aan dat in gevallen waarin een rij is gemarkeerd als Toegevoegd in de gegevenstabel, de oorspronkelijke waarde of elke kolom is ingesteld op de inhoud van de overeenkomende rij uit de gegevensbron. De huidige waarde behoudt de waarden die zijn toegewezen wanneer de rij is toegevoegd en de RowState van de rij wordt ingesteld op Gewijzigd.
De volgende tabel geeft een korte beschrijving van de LoadOption opsommingswaarden.
LoadOption-waarde | Beschrijving |
---|---|
OverwriteRow | Als binnenkomende rijen dezelfde PrimaryKey-waarde hebben als een rij die al in de gegevenstabel staat, worden de oorspronkelijke en huidige waarden van elke kolom vervangen door de waarden in de binnenkomende rij en wordt de eigenschap RowState ingesteld op Ongewijzigd. Rijen uit de gegevensbron die nog niet bestaan in de gegevenstabel , worden toegevoegd met de rowstate-waarde Ongewijzigd. Met deze optie wordt de inhoud van de gegevenstabel vernieuwd, zodat deze overeenkomt met de inhoud van de gegevensbron. |
PreserveCurrentValues (standaard) | Als binnenkomende rijen dezelfde PrimaryKey-waarde hebben als een rij in de gegevenstabel, wordt de oorspronkelijke waarde ingesteld op de inhoud van de binnenkomende rij en wordt de huidige waarde niet gewijzigd. Als de RowState is toegevoegd of gewijzigd, wordt deze ingesteld op Gewijzigd. Als de RowState is verwijderd, blijft deze verwijderd. Rijen uit de gegevensbron die nog niet aanwezig zijn in de gegevenstabel , worden toegevoegd en de RowState is ingesteld op Ongewijzigd. |
UpdateCurrentValues | Als binnenkomende rijen dezelfde primaryKey-waarde hebben als de rij die zich al in de gegevenstabel bevindt, wordt de huidige waarde gekopieerd naar de oorspronkelijke waarde en wordt de huidige waarde vervolgens ingesteld op de inhoud van de binnenkomende rij. Als de RowState in de gegevenstabel is toegevoegd, blijft de RowState toegevoegd. Voor rijen die zijn gemarkeerd als Gewijzigd of Verwijderd, wordt de RowState gewijzigd. Rijen uit de gegevensbron die nog niet aanwezig zijn in de gegevenstabel , worden toegevoegd en de RowState is ingesteld op Toegevoegd. |
In het volgende voorbeeld wordt de methode Laden gebruikt om een lijst met verjaardagen weer te geven voor de werknemers in de Northwind-database .
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