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. Neste formulário, ele simplesmente carrega o DataTable com linhas. Opcionalmente, você pode especificar o parâmetro LoadOption para controlar como os dados são adicionados à DataTable.

O parâmetro LoadOption é particularmente útil nos casos em que o DataTable já contém linhas de dados, porque 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 valor Original ou cada coluna é definido como o conteúdo da linha correspondente da fonte de dados. O valor Current manterá os valores atribuídos quando a linha foi adicionada e o RowState da linha será definido como Changed.

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

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

Linhas da fonte de dados que ainda não existem na DataTable são adicionadas com um valor RowState de Unchanged.

Com efeito, essa opção 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 valor PrimaryKey que uma linha já existente na DataTable, o valor Original será definido como o conteúdo da linha de entrada e o valor Current não será alterado.

Se o RowState for Adicionado ou Modificado, ele será definido como Modificado.

Se o RowState foi excluído, ele permanece excluído.

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

Se o RowState na DataTable foi adicionado, o RowState permanece adicionado. Para linhas marcadas como Modificado ou Excluído, o RowState é Modificado.

Linhas da fonte de dados que ainda não existem na DataTable são adicionadas e o RowState é definido como Added.

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