Share via


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, un DataReader. En este formato, simplemente se cargan filas en la DataTable. Si lo desea, puede especificar el parámetro LoadOption para controlar el modo en que se agregan los datos a la DataTable.

El parámetro LoadOption resulta especialmente útil en aquellos casos en los que la DataTable ya contiene filas de datos, porque describe como se combinan los datos que provienen del origen de datos con los datos que ya existentes en la tabla. Por ejemplo, PreserveCurrentValues (predeterminado) especifica que en aquellos casos en los que una fila se marque como Added en la 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 el 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 la 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 la DataTable se agregan con un valor RowState de Unchanged.

Esta opción activa actualiza el contenido de la 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 la DataTable, el valor Original se establece en el valor del contenido de la fila entrante y no se modifica el valor Current.

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

Si el RowState fue Deleted, sigue siendo Deleted.

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

UpdateCurrentValues

Si las filas entrantes tienen el mismo valor PrimaryKey que la fila existente en la 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 RowState de la DataTable fue Added, el RowState sigue siendo Added. Las filas marcadas como Modified o Deleted, el RowState es Modified.

Las filas del origen de datos que aún no existen en la DataTable se agregan y el 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.

[Visual Basic]

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

Vea también

Otros recursos

Manipular datos en DataTable