Compartilhar via


O método Load

Você pode usar o método Load para carregar um DataTable com linhas de uma fonte de dados. Esse é um método sobrecarregado que, em sua forma mais simples, aceita um só parâmetro, um DataReader. Nesse formulário, ele simplesmente carrega DataTable com linhas. Opcionalmente, você 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 o DataTable já contém linhas de dados, pois descreve como os dados de entrada da fonte de dados serão combinados com os dados já na tabela. Por exemplo, PreserveCurrentValues (o padrão) especifica que, nos casos em que uma linha é marcada como Added na DataTable, o Original valor ou cada coluna é definido como o conteúdo da linha correspondente da fonte de dados. O Current valor manterá os valores atribuídos quando a linha foi adicionada e a RowState da linha será definida como Alterada.

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

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

As linhas da fonte de dados que ainda não existem no DataTable são adicionadas com um valor de RowStateUnchanged.

Essa opção, na verdade, atualiza o conteúdo do DataTable para que ele 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 será definido como o conteúdo da linha de entrada e o Current valor não será alterado.

Se o RowState estiver Added ou modificado, ele será definido como Modificado.

Se o RowState foi Excluído, ele permanecerá Excluído.

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

Se o RowState no DataTable foi adicionado, o RowState permanece adicionado. Para linhas marcadas como Modified ou Excluídas, a RowState é Modificada.

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

O exemplo a seguir usa o Load método para exibir uma lista de aniversários para os funcionários no Northwind banco 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

Confira também