Partilhar via


DbDataAdapter.Update Método

Definição

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída no DataSet.

Sobrecargas

Update(DataSet, String)

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída no DataSet com o nome DataTable especificado.

Update(DataRow[], DataTableMapping)

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída na matriz de objetos DataRow especificada.

Update(DataTable)

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída no DataTable especificado.

Update(DataSet)

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída no DataSet especificado.

Update(DataRow[])

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída na matriz especificada no DataSet.

Update(DataSet, String)

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída no DataSet com o nome DataTable especificado.

public:
 int Update(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Update (System.Data.DataSet dataSet, string srcTable);
override this.Update : System.Data.DataSet * string -> int
Public Function Update (dataSet As DataSet, srcTable As String) As Integer

Parâmetros

dataSet
DataSet

O DataSet a ser usado para atualizar a fonte de dados.

srcTable
String

O nome da tabela de origem a ser usado para mapeamento de tabela.

Retornos

O número de linhas atualizadas com êxito a partir do DataSet.

Exceções

O DataSet é inválido.

A tabela de origem é inválida.

Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registro afetado.

Exemplos

O exemplo a seguir usa a classe derivada, OleDbDataAdapter, para atualizar a fonte de dados.

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString, string tableName)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        adapter.Update(customers, tableName);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String, _
    ByVal tableName As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        adapter.Update(customers, tableName)

        Return customers
    End Using
End Function

Comentários

Quando um aplicativo chama o Update método , o DbDataAdapter examina a RowState propriedade e executa as instruções INSERT, UPDATE ou DELETE necessárias iterativamente para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida por uma instrução INSERT e outra instrução DELETE, devido à ordenação das linhas no DataTable.

Deve-se observar que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o GetChanges método em situações em que você deve controlar a sequência de tipos de instrução (por exemplo, INSERT antes de UPDATE). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.

Se as instruções INSERT, UPDATE ou DELETE não tiverem sido especificadas, o Update método gerará uma exceção. No entanto, é possível criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única caso você defina a propriedade SelectCommand de um provedor de dados do .NET Framework. Em seguida, quaisquer instruções SQL adicionais que você não definir são geradas pelo CommandBuilder. Esta lógica de geração requer que as informações da coluna principal estejam presente no DataSet. Para obter mais informações, consulte Gerando comandos com CommandBuilders.

O Update método dá suporte a cenários em que o DataSet contém vários DataTable objetos cujos nomes diferem apenas por caso. Quando várias tabelas com o mesmo nome, mas caso diferente, existem em um DataSet, Update executa uma comparação que diferencia maiúsculas de minúsculas para localizar a tabela correspondente e gera uma exceção se nenhuma correspondência exata existir. O código C# a seguir ilustra esse comportamento.

DataSet ds = new DataSet();  
 ds.Tables.Add("aaa");  
 ds.Tables.Add("AAA");  
 adapter.Update(ds, "aaa"); // Updates "aaa", which already exists in the DataSet.  
 adapter.Update(ds, "AAA"); // Updates "AAA", which already exists in the DataSet.  
    adapter.Update(ds, "Aaa"); // Results in an exception.  

Se Update for chamado e o DataSet contiver apenas um DataTable cujo nome difere apenas por caso, isso DataTable será atualizado. Nesse cenário, a comparação não diferencia maiúsculas de minúsculas. O código C# a seguir ilustra esse comportamento.

DataSet dataset = new DataSet();  
 dataset.Tables.Add("aaa");  
    adapter.Update(dataset, "AAA"); // Updates table "aaa" because only one similarly named table is in the DataSet.  

O Update método recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. Em Update seguida, atualiza a linha usando o valor da UpdatedRowSource propriedade . Todas as linhas adicionais retornadas são ignoradas.

Depois que todos os dados são recarregados no DataSet, o evento OnRowUpdated é acionado, permitindo que o usuário inspecione a linha DataSet reconciliada e todos os parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações feitas nessa linha são aceitas.

Ao usar Update, a ordem de execução é a seguinte:

  1. Os valores no DataRow são movidos para os valores de parâmetro.

  2. O evento OnRowUpdating será gerado.

  3. O comando é executado.

  4. Se o comando estiver definido como FirstReturnedRecord, o primeiro resultado retornado será colocado no DataRow.

  5. Se houver parâmetros de saída, eles serão colocados no DataRow.

  6. O evento OnRowUpdated será gerado.

  7. AcceptChanges é chamado.

Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada a ele. Os parâmetros são mapeados para a linha atual por meio das propriedades SourceColumn e SourceVersion da classe Parameter de um provedor de dados do .NET Framework. SourceColumn refere-se a uma DataTable coluna que faz DbDataAdapter referência a para obter valores de parâmetro para a linha atual.

SourceColumn refere-se ao nome da coluna não mapeado antes da aplicação de qualquer mapeamento de tabela. Caso SourceColumn refira-se a uma coluna inexistente, a ação tomada depende de um dos valores MissingMappingAction a seguir.

Valor de enumeração Ação executada
MissingMappingAction.Passthrough Use os nomes de coluna de fonte e os nomes de tabela no DataSet caso nenhum mapeamento esteja presente.
MissingMappingAction.Ignore Um SystemException é gerado. Quando os mapeamentos são definidos explicitamente, um mapeamento ausente para um parâmetro de entrada geralmente é o resultado de um erro.
MissingMappingAction.Error Um SystemException é gerado.

A propriedade SourceColumn também é usada para remapear o valor para parâmetros de saída ou de entrada/saída para o DataSet. Uma exceção será gerada se fizer referência a uma coluna inexistente.

A SourceVersion propriedade de uma classe do Parameter provedor de dados .NET Framework determina se a versão Original, Atual ou Proposta do valor da coluna deve ser usada. Essa funcionalidade geralmente é usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para marcar para violações de simultaneidade otimistas.

Observação

Caso ocorra um erro durante a atualização de uma linha, uma exceção é lançada e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro é encontrado, defina a propriedade ContinueUpdateOnError como true antes de chamar Update. Você também pode responder a erros linha por linha dentro do evento RowUpdated de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro evento RowUpdated, defina a propriedade Status do RowUpdatedEventArgs como Continue.

Confira também

Aplica-se a

Update(DataRow[], DataTableMapping)

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída na matriz de objetos DataRow especificada.

protected:
 virtual int Update(cli::array <System::Data::DataRow ^> ^ dataRows, System::Data::Common::DataTableMapping ^ tableMapping);
protected virtual int Update (System.Data.DataRow[] dataRows, System.Data.Common.DataTableMapping tableMapping);
override this.Update : System.Data.DataRow[] * System.Data.Common.DataTableMapping -> int
Protected Overridable Function Update (dataRows As DataRow(), tableMapping As DataTableMapping) As Integer

Parâmetros

dataRows
DataRow[]

Uma matriz de objetos DataRow usada para atualizar a fonte de dados.

tableMapping
DataTableMapping

A coleção TableMappings a ser usada.

Retornos

O número de linhas atualizadas com êxito da matriz de DataRow objetos.

Exceções

O DataSet é inválido.

A tabela de origem é inválida.

Não há nenhum DataRow para atualização.

- ou -

Não há nenhum DataTable para atualização.

- ou -

Não há nenhum DataSet para ser usado como uma fonte.

Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registro afetado.

Comentários

Quando um aplicativo chama o Update método , o DbDataAdapter examina a RowState propriedade e executa as instruções INSERT, UPDATE ou DELETE necessárias iterativamente para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida por uma instrução INSERT e outra instrução DELETE, devido à ordenação das linhas no DataTable.

Deve-se observar que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o GetChanges método em situações em que você deve controlar a sequência de tipos de instrução (por exemplo, INSERTs antes de UPDATEs). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.

Se as instruções INSERT, UPDATE ou DELETE não tiverem sido especificadas, o Update método gerará uma exceção. No entanto, é possível criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única caso você defina a propriedade SelectCommand de um provedor de dados do .NET Framework. Em seguida, quaisquer instruções SQL adicionais que você não definir são geradas pelo CommandBuilder. Esta lógica de geração requer que as informações da coluna principal estejam presente no DataSet. Para obter mais informações, consulte Gerando comandos com CommandBuilders.

O Update método recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. Em Update seguida, atualiza a linha usando o valor da UpdatedRowSource propriedade . Todas as linhas adicionais retornadas são ignoradas.

Depois que todos os dados são recarregados no DataSet, o evento OnRowUpdated é acionado, permitindo que o usuário inspecione a linha DataSet reconciliada e todos os parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações feitas nessa linha são aceitas.

Ao usar Update, a ordem de execução é a seguinte:

  1. Os valores no DataRow são movidos para os valores de parâmetro.

  2. O evento OnRowUpdating será gerado.

  3. O comando é executado.

  4. Se o comando estiver definido como FirstReturnedRecord, o primeiro resultado retornado será colocado no DataRow.

  5. Se houver parâmetros de saída, eles serão colocados no DataRow.

  6. O evento OnRowUpdated será gerado.

  7. AcceptChanges é chamado.

Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada a ele. Os parâmetros são mapeados para a linha atual por meio das propriedades SourceColumn e SourceVersion da classe Parameter de um provedor de dados do .NET Framework. SourceColumn refere-se a uma DataTable coluna que faz DbDataAdapter referência a para obter valores de parâmetro para a linha atual.

SourceColumn refere-se ao nome da coluna não mapeado antes da aplicação de qualquer mapeamento de tabela. Caso SourceColumn refira-se a uma coluna inexistente, a ação tomada depende de um dos valores MissingMappingAction a seguir.

Valor de enumeração Ação executada
MissingMappingAction.Passthrough Use os nomes de coluna de fonte e os nomes de tabela no DataSet caso nenhum mapeamento esteja presente.
MissingMappingAction.Ignore Um SystemException é gerado. Quando os mapeamentos são definidos explicitamente, um mapeamento ausente para um parâmetro de entrada geralmente é o resultado de um erro.
MissingMappingAction.Error Um SystemException é gerado.

A propriedade SourceColumn também é usada para remapear o valor para parâmetros de saída ou de entrada/saída para o DataSet. Uma exceção será gerada se fizer referência a uma coluna inexistente.

A SourceVersion propriedade de uma classe do Parameter provedor de dados .NET Framework determina se a versão Original, Atual ou Proposta do valor da coluna deve ser usada. Essa funcionalidade geralmente é usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para marcar para violações de simultaneidade otimistas.

Observação

Caso ocorra um erro durante a atualização de uma linha, uma exceção é lançada e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro é encontrado, defina a propriedade ContinueUpdateOnError como true antes de chamar Update. Você também pode responder a erros linha por linha dentro do evento RowUpdated de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro evento RowUpdated, defina a propriedade Status do RowUpdatedEventArgs como Continue.

Confira também

Aplica-se a

Update(DataTable)

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída no DataTable especificado.

public:
 int Update(System::Data::DataTable ^ dataTable);
public int Update (System.Data.DataTable dataTable);
override this.Update : System.Data.DataTable -> int
Public Function Update (dataTable As DataTable) As Integer

Parâmetros

dataTable
DataTable

O DataTable usado para atualizar a fonte de dados.

Retornos

O número de linhas atualizadas com êxito a partir do DataTable.

Exceções

O DataSet é inválido.

A tabela de origem é inválida.

Não há nenhum DataRow para atualização.

- ou -

Não há nenhum DataTable para atualização.

- ou -

Não há nenhum DataSet para ser usado como uma fonte.

Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registro afetado.

Exemplos

O exemplo a seguir usa a classe derivada, OleDbDataAdapter, para atualizar a fonte de dados.

public DataTable CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataTable customers = new DataTable();
        adapter.Fill(customers);

        // code to modify data in DataTable here

        adapter.Update(customers);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataTable

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataTable()
        adapter.Fill(customers)

        ' Code to modify data in DataTable here 

        adapter.Update(customers)
        Return customers
    End Using
End Function

Comentários

Quando um aplicativo chama o Update método , o DbDataAdapter examina a RowState propriedade e executa as instruções INSERT, UPDATE ou DELETE necessárias iterativamente para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida por uma instrução INSERT e outra instrução DELETE, devido à ordenação das linhas no DataTable.

Deve-se observar que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o GetChanges método em situações em que você deve controlar a sequência de tipos de instrução (por exemplo, INSERTs antes de UPDATEs). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.

Se as instruções INSERT, UPDATE ou DELETE não tiverem sido especificadas, o Update método gerará uma exceção. No entanto, é possível criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única caso você defina a propriedade SelectCommand de um provedor de dados do .NET Framework. Em seguida, quaisquer instruções SQL adicionais que você não definir são geradas pelo CommandBuilder. Esta lógica de geração requer que as informações da coluna principal estejam presente no DataSet. Para obter mais informações, consulte Gerando comandos com CommandBuilders.

O Update método recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. Em Update seguida, atualiza a linha usando o valor da UpdatedRowSource propriedade . Todas as linhas adicionais retornadas são ignoradas.

Depois que todos os dados são recarregados no DataSet, o evento OnRowUpdated é acionado, permitindo que o usuário inspecione a linha DataSet reconciliada e todos os parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações feitas nessa linha são aceitas.

Ao usar Update, a ordem de execução é a seguinte:

  1. Os valores no DataRow são movidos para os valores de parâmetro.

  2. O evento OnRowUpdating será gerado.

  3. O comando é executado.

  4. Se o comando estiver definido como FirstReturnedRecord, o primeiro resultado retornado será colocado no DataRow.

  5. Se houver parâmetros de saída, eles serão colocados no DataRow.

  6. O evento OnRowUpdated será gerado.

  7. AcceptChanges é chamado.

Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada a ele. Os parâmetros são mapeados para a linha atual por meio das propriedades SourceColumn e SourceVersion da classe Parameter de um provedor de dados do .NET Framework. SourceColumn refere-se a uma DataTable coluna que faz DbDataAdapter referência a para obter valores de parâmetro para a linha atual.

SourceColumn refere-se ao nome da coluna não mapeado antes da aplicação de qualquer mapeamento de tabela. Caso SourceColumn refira-se a uma coluna inexistente, a ação tomada depende de um dos valores MissingMappingAction a seguir.

Valor de enumeração Ação executada
MissingMappingAction.Passthrough Use os nomes de coluna de fonte e os nomes de tabela no DataSet caso nenhum mapeamento esteja presente.
MissingMappingAction.Ignore Um SystemException é gerado. Quando os mapeamentos são definidos explicitamente, um mapeamento ausente para um parâmetro de entrada geralmente é o resultado de um erro.
MissingMappingAction.Error Um SystemException é gerado.

A propriedade SourceColumn também é usada para remapear o valor para parâmetros de saída ou de entrada/saída para o DataSet. Uma exceção será gerada se fizer referência a uma coluna inexistente.

A SourceVersion propriedade de uma classe do Parameter provedor de dados .NET Framework determina se a versão Original, Atual ou Proposta do valor da coluna deve ser usada. Essa funcionalidade geralmente é usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para marcar para violações de simultaneidade otimistas.

Observação

Caso ocorra um erro durante a atualização de uma linha, uma exceção é lançada e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro é encontrado, defina a propriedade ContinueUpdateOnError como true antes de chamar Update. Você também pode responder a erros linha por linha dentro do evento RowUpdated de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro evento RowUpdated, defina a propriedade Status do RowUpdatedEventArgs como Continue.

Confira também

Aplica-se a

Update(DataSet)

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída no DataSet especificado.

public:
 override int Update(System::Data::DataSet ^ dataSet);
public override int Update (System.Data.DataSet dataSet);
override this.Update : System.Data.DataSet -> int
Public Overrides Function Update (dataSet As DataSet) As Integer

Parâmetros

dataSet
DataSet

O DataSet usado para atualizar a fonte de dados.

Retornos

O número de linhas atualizadas com êxito a partir do DataSet.

Implementações

Exceções

A tabela de origem é inválida.

Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registro afetado.

Exemplos

O exemplo a seguir usa a classe derivada, OleDbDataAdapter, para atualizar a fonte de dados.

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        adapter.Update(customers);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        adapter.Update(customers)

        Return customers
    End Using
End Function

Comentários

Quando um aplicativo chama o Update método , o DbDataAdapter examina a RowState propriedade e executa as instruções INSERT, UPDATE ou DELETE necessárias iterativamente para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida por uma instrução INSERT e outra instrução DELETE, devido à ordenação das linhas no DataTable.

Deve-se observar que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o GetChanges método em situações em que você deve controlar a sequência de tipos de instrução (por exemplo, INSERTs antes de UPDATEs). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.

Se as instruções INSERT, UPDATE ou DELETE não tiverem sido especificadas, o Update método gerará uma exceção. No entanto, é possível criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única caso você defina a propriedade SelectCommand de um provedor de dados do .NET Framework. Em seguida, quaisquer instruções SQL adicionais que você não definir são geradas pelo CommandBuilder. Esta lógica de geração requer que as informações da coluna principal estejam presente no DataSet. Para obter mais informações, consulte Gerando comandos com CommandBuilders.

O Update método recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. Em Update seguida, atualiza a linha usando o valor da UpdatedRowSource propriedade . Todas as linhas adicionais retornadas são ignoradas.

Depois que todos os dados são recarregados no DataSet, o evento OnRowUpdated é acionado, permitindo que o usuário inspecione a linha DataSet reconciliada e todos os parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações feitas nessa linha são aceitas.

Ao usar Update, a ordem de execução é a seguinte:

  1. Os valores no DataRow são movidos para os valores de parâmetro.

  2. O evento OnRowUpdating será gerado.

  3. O comando é executado.

  4. Se o comando estiver definido como FirstReturnedRecord, o primeiro resultado retornado será colocado no DataRow.

  5. Se houver parâmetros de saída, eles serão colocados no DataRow.

  6. O evento OnRowUpdated será gerado.

  7. AcceptChanges é chamado.

Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada a ele. Os parâmetros são mapeados para a linha atual por meio das propriedades SourceColumn e SourceVersion da classe Parameter de um provedor de dados do .NET Framework. SourceColumn refere-se a uma DataTable coluna que faz DbDataAdapter referência a para obter valores de parâmetro para a linha atual.

SourceColumn refere-se ao nome da coluna não mapeado antes da aplicação de qualquer mapeamento de tabela. Caso SourceColumn refira-se a uma coluna inexistente, a ação tomada depende de um dos valores MissingMappingAction a seguir.

Valor de enumeração Ação executada
MissingMappingAction.Passthrough Use os nomes de coluna de fonte e os nomes de tabela no DataSet caso nenhum mapeamento esteja presente.
MissingMappingAction.Ignore Um SystemException é gerado. Quando os mapeamentos são definidos explicitamente, um mapeamento ausente para um parâmetro de entrada geralmente é o resultado de um erro.
MissingMappingAction.Error Um SystemException é gerado.

A propriedade SourceColumn também é usada para remapear o valor para parâmetros de saída ou de entrada/saída para o DataSet. Uma exceção será gerada se fizer referência a uma coluna inexistente.

A SourceVersion propriedade de uma classe do Parameter provedor de dados .NET Framework determina se a versão Original, Atual ou Proposta do valor da coluna deve ser usada. Essa funcionalidade geralmente é usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para marcar para violações de simultaneidade otimistas.

Observação

Caso ocorra um erro durante a atualização de uma linha, uma exceção é lançada e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro é encontrado, defina a propriedade ContinueUpdateOnError como true antes de chamar Update. Você também pode responder a erros linha por linha dentro do evento RowUpdated de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro evento RowUpdated, defina a propriedade Status do RowUpdatedEventArgs como Continue.

Confira também

Aplica-se a

Update(DataRow[])

Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs
Origem:
DbDataAdapter.cs

Atualiza os valores no banco de dados executando as respectivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou excluída na matriz especificada no DataSet.

public:
 int Update(cli::array <System::Data::DataRow ^> ^ dataRows);
public int Update (System.Data.DataRow[] dataRows);
override this.Update : System.Data.DataRow[] -> int
Public Function Update (dataRows As DataRow()) As Integer

Parâmetros

dataRows
DataRow[]

Uma matriz de objetos DataRow usada para atualizar a fonte de dados.

Retornos

O número de linhas atualizadas com êxito a partir do DataSet.

Exceções

O DataSet é inválido.

A tabela de origem é inválida.

Não há nenhum DataRow para atualização.

- ou -

Não há nenhum DataTable para atualização.

- ou -

Não há nenhum DataSet para ser usado como uma fonte.

Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registro afetado.

Exemplos

O exemplo a seguir usa a classe derivada, OleDbDataAdapter, para atualizar a fonte de dados.

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        //Insert new records from DataSet
        DataRow[] rows = customers.Tables[0].Select(
            null, null, DataViewRowState.Added);
        adapter.Update(rows);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        ' Insert new records from DataSet
        Dim rows() As DataRow = customers.Tables(0).Select( _
            Nothing, Nothing, DataViewRowState.Added)
        adapter.Update(rows)

        Return customers
    End Using
End Function

Comentários

Quando um aplicativo chama o Update método , o DbDataAdapter examina a RowState propriedade e executa as instruções INSERT, UPDATE ou DELETE necessárias iterativamente para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida por uma instrução INSERT e outra instrução DELETE, devido à ordenação das linhas no DataTable.

Deve-se observar que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o GetChanges método em situações em que você deve controlar a sequência de tipos de instrução (por exemplo, INSERTs antes de UPDATEs). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.

Se as instruções INSERT, UPDATE ou DELETE não tiverem sido especificadas, o Update método gerará uma exceção. No entanto, é possível criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única caso você defina a propriedade SelectCommand de um provedor de dados do .NET Framework. Em seguida, quaisquer instruções SQL adicionais que você não definir são geradas pelo CommandBuilder. Esta lógica de geração requer que as informações da coluna principal estejam presente no DataSet. Para obter mais informações, consulte Gerando comandos com CommandBuilders.

O Update método recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. Em Update seguida, atualiza a linha usando o valor da UpdatedRowSource propriedade . Todas as linhas adicionais retornadas são ignoradas.

Depois que todos os dados são recarregados no DataSet, o evento OnRowUpdated é acionado, permitindo que o usuário inspecione a linha DataSet reconciliada e todos os parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações feitas nessa linha são aceitas.

Ao usar Update, a ordem de execução é a seguinte:

  1. Os valores no DataRow são movidos para os valores de parâmetro.

  2. O evento OnRowUpdating será gerado.

  3. O comando é executado.

  4. Se o comando estiver definido como FirstReturnedRecord, o primeiro resultado retornado será colocado no DataRow.

  5. Se houver parâmetros de saída, eles serão colocados no DataRow.

  6. O evento OnRowUpdated será gerado.

  7. AcceptChanges é chamado.

Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada a ele. Os parâmetros são mapeados para a linha atual por meio das propriedades SourceColumn e SourceVersion da classe Parameter de um provedor de dados do .NET Framework. SourceColumn refere-se a uma DataTable coluna que faz DbDataAdapter referência a para obter valores de parâmetro para a linha atual.

SourceColumn refere-se ao nome da coluna não mapeado antes da aplicação de qualquer mapeamento de tabela. Caso SourceColumn refira-se a uma coluna inexistente, a ação tomada depende de um dos valores MissingMappingAction a seguir.

Valor de enumeração Ação executada
MissingMappingAction.Passthrough Use os nomes de coluna de fonte e os nomes de tabela no DataSet caso nenhum mapeamento esteja presente.
MissingMappingAction.Ignore Um SystemException é gerado. Quando os mapeamentos são definidos explicitamente, um mapeamento ausente para um parâmetro de entrada geralmente é o resultado de um erro.
MissingMappingAction.Error Um SystemException é gerado.

A propriedade SourceColumn também é usada para remapear o valor para parâmetros de saída ou de entrada/saída para o DataSet. Uma exceção será gerada se fizer referência a uma coluna inexistente.

A SourceVersion propriedade de uma classe do Parameter provedor de dados .NET Framework determina se a versão Original, Atual ou Proposta do valor da coluna deve ser usada. Essa funcionalidade geralmente é usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para marcar para violações de simultaneidade otimistas.

Observação

Caso ocorra um erro durante a atualização de uma linha, uma exceção é lançada e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro é encontrado, defina a propriedade ContinueUpdateOnError como true antes de chamar Update. Você também pode responder a erros linha por linha dentro do evento RowUpdated de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro evento RowUpdated, defina a propriedade Status do RowUpdatedEventArgs como Continue.

Confira também

Aplica-se a