Share via


Metodo Load

È possibile usare il metodo Load per caricare un tipo DataTable con righe provenienti da un'origine dati. Si tratta di un metodo di overload che, nella forma più semplice, accetta un singolo parametro, DataReader. In questa forma, viene semplicemente caricata la DataTable con le righe. Facoltativamente, è possibile specificare il parametro LoadOption per controllare il modo in cui vengono aggiunti i dati alla DataTable.

Il parametro LoadOption è particolarmente utile nei casi in cui DataTable contiene già righe di dati perché descrive come i dati in ingresso dall'origine dati verranno combinati con i dati già presenti nella tabella. Ad esempio, PreserveCurrentValues, ovvero l'impostazione predefinita, specifica che nei casi in cui una riga è contrassegnata come Added nella DataTable, il valore Original di ciascuna colonna è impostato sul contenuto della riga corrispondente dell'origine dati. Il valore Current conserverà i valori assegnati quando la riga è stata aggiunta mentre il valore della riga relativo a RowState verrà impostato su Changed.

Nella tabella seguente viene fornita una breve descrizione dei valori di enumerazione di LoadOption.

Valore LoadOption Descrizione
OverwriteRow Se le righe in arrivo presentano lo stesso valore PrimaryKey di una riga già presente nella DataTable, i valori Original e Current di ogni colonna vengono sostituiti dai valori della riga in arrivo e la proprietà RowState viene impostata su Unchanged.

Le righe provenienti da un'origine dati e non ancora presenti nella DataTable vengono aggiunte con il valore di RowState pari a Unchanged.

Se questa opzione è attiva, il contenuto della DataTable viene aggiornato in modo da corrispondere al contenuto dell'origine dati.
PreserveCurrentValues (impostazione predefinita) Se le righe in arrivo presentano lo stesso valore PrimaryKey di una riga già presente nella DataTable, il valore Original viene impostato sul contenuto della riga in arrivo e il valore Current non viene modificato.

Se il valore relativo a RowState è Added o Modified, verrà impostato su Modified.

Se il valore relativo a RowState era Deleted, rimarrà Deleted.

Le righe provenienti da un'origine dati non ancora presenti nella DataTable vengono aggiunte e RowState viene impostato su Unchanged.
UpdateCurrentValues Se le righe in arrivo presentano lo stesso valore PrimaryKey della riga già presente nella DataTable, il valore Current viene copiato nel valore Original e il valore Current viene quindi impostato sul contenuto della riga in arrivo.

Se il valore relativo a RowState nella DataTable era Added, RowState rimarrà Added. Per le righe contrassegnate come Modified o Deleted, il valore relativo a RowState sarà Modified.

Le righe provenienti da un'origine dati non ancora presenti nella DataTable vengono aggiunte e RowState viene impostato su Added.

Nell'esempio seguente viene usato il metodo Load per visualizzare un elenco delle date di nascita dei dipendenti nel database 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  

Vedi anche