Partilhar via


O método Load

Você pode usar o Load método para carregar um DataTable com linhas de uma fonte de dados. Este é um método sobrecarregado que, na sua forma mais simples, aceita um único parâmetro, um DataReader. Nesta forma, simplesmente carrega o DataTable com linhas. Opcionalmente, pode especificar o LoadOption parâmetro para controlar como os dados são adicionados à DataTable.

O LoadOption parâmetro é particularmente útil nos casos em que já DataTable contém linhas de dados, porque descreve como os dados recebidos da fonte de dados serão combinados com os dados já presentes na tabela. Por exemplo, PreserveCurrentValues (o padrão) especifica que, nos casos em que uma linha é marcada como Added na DataTable, o Original valor de cada coluna é definido para o conteúdo da linha correspondente da fonte de dados. O Current valor manterá os valores atribuídos quando a linha foi adicionada, e o RowState da linha será definido como Alterado.

A tabela a seguir fornece uma breve descrição dos LoadOption valores de enumeração.

Valor LoadOption Descrição
OverwriteRow Se as linhas de entrada tiverem o mesmo PrimaryKey valor que uma linha já presente na DataTable, os Original valores e Current de cada coluna são substituídos pelos valores da linha de entrada, e a RowState propriedade é definida como Inalterada.

As linhas da fonte de dados que ainda não existem no DataTable são acrescentadas com um valor RowState de Inalterado.

Esta opção, na prática, atualiza o conteúdo do DataTable para que corresponda ao conteúdo da fonte de dados.
PreserveCurrentValues (padrão) Se as linhas de entrada tiverem o mesmo PrimaryKey valor que uma linha já na DataTable, o Original valor é definido para o conteúdo da linha de entrada e o Current valor não é alterado.

Se o RowState for Added ou Modificado, é definido como Modificado.

Se RowState foi Eliminado, permanece Eliminado.

As linhas da fonte de dados que ainda não existem em DataTable são adicionadas, e o RowState é definido como Inalterado.
UpdateCurrentValues Se as linhas de entrada tiverem o mesmo PrimaryKey valor que a linha já presente na DataTable, o Current valor é copiado para o Original valor e o Current valor é então definido para o conteúdo da linha de entrada.

Se o RowState no DataTable foi Adicionado, o RowState permanece Adicionado. Para linhas marcadas como Modified ou Eliminadas, o RowState é Modificado.

As linhas da fonte de dados que ainda não existem no DataTable são adicionadas, e o RowState é definido como Adicionado.

O exemplo seguinte utiliza o Load método para mostrar uma lista de datas de nascimento dos colaboradores na Northwind base de dados.

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 também