Compartir a través de


El método Load

Se puede utilizar el método Load para cargar una DataTable con filas desde un origen de datos. Se trata de un método sobrecargado que, en su formato más sencillo, acepta un único parámetro, DataReader. En este formato, simplemente se cargan filas en DataTable. Si lo desea, puede especificar el parámetro LoadOption para controlar el modo en que se agregan los datos a DataTable.

El parámetro LoadOption resulta especialmente útil en aquellos casos en los que DataTable ya contiene filas de datos, porque describe cómo se combinan los datos que provienen del origen de datos con los datos que ya existen en la tabla. Por ejemplo, PreserveCurrentValues (el valor predeterminado) especifica que en aquellos casos en los que una fila se marque como Added en DataTable, el valor Original de cada columna se establece en el valor del contenido de la fila coincidente del origen de datos. El valor Current conserva los valores asignados al agregarse la fila y la propiedad RowState de la fila se establece en Changed.

En la siguiente tabla se ofrece una breve descripción de los valores de enumeración LoadOption.

Valor LoadOption Descripción
OverwriteRow Si las filas entrantes tienen el mismo valor PrimaryKey que una fila ya existente en DataTable, los valores Original y Current de cada columna se sustituyen por los valores de la fila entrante y la propiedad RowState se establece en Unchanged.

Las filas del origen de datos que aún no existen en DataTable se agregan con un valor RowState de Unchanged.

Esta opción actualiza el contenido de DataTable, para que coincida con el del origen de datos.
PreserveCurrentValues (predeterminado) Si las filas entrantes tienen el mismo valor PrimaryKey que una fila ya existente en DataTable, el valor Original se establece en el valor del contenido de la fila entrante y no se modifica el valor Current.

Si el valor de RowState es Added o Modified, se establece en Modified.

Si el valor de RowState fue Deleted, sigue siendo Deleted.

Las filas del origen de datos que aún no existen en DataTable se agregan y RowState se establece en Unchanged.
UpdateCurrentValues Si las filas entrantes tienen el mismo valor PrimaryKey que la fila existente en DataTable, se copia el valor Current al valor Original y, a continuación, el valor Current se establece en el contenido de la fila entrante.

Si el valor de RowState de DataTable fue Added, el valor de RowState seguirá siendo Added. Si las filas están marcadas como Modified o Deleted, el valor de RowState es Modified.

Las filas del origen de datos que aún no existen en DataTable se agregan y RowState se establece en Added.

En el siguiente ejemplo se utiliza el método Load para mostrar una lista de cumpleaños de los empleados de la base de datos 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

Consulte también