DbDataAdapter.Update Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 especificada de objetos DataRow. |
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 DataTableespecificado. |
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 DataSetespecificado. |
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
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
- srcTable
- String
O nome da tabela de origem a ser usada para mapeamento de tabela.
Retornos
O número de linhas atualizadas com êxito 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 registros afetados.
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 método Update, o DbDataAdapter examina a propriedade RowState 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, em seguida, outra instrução DELETE, devido à ordenação das linhas no DataTable.
Observe que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o método GetChanges 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 método Update gerará uma exceção. No entanto, você pode criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única se definir 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 pelocommandBuilder
O método Update dá suporte a cenários em que o DataSet contém vários objetos DataTable 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 não houver correspondência exata. 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, esse 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 método Update recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. O Update atualiza a linha usando o valor da propriedade UpdatedRowSource. Todas as linhas adicionais retornadas são ignoradas.
Depois que os dados são carregados novamente no DataSet, o evento OnRowUpdated é gerado, permitindo que o usuário inspecione a linha DataSet reconciliada e quaisquer parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações nessa linha são aceitas.
Ao usar Update, a ordem de execução é a seguinte:
Os valores no DataRow são movidos para os valores de parâmetro.
O evento OnRowUpdating é gerado.
O comando é executado.
Se o comando estiver definido como
FirstReturnedRecord
, o primeiro resultado retornado será colocado no DataRow.Se houver parâmetros de saída, eles serão colocados no DataRow.
O evento OnRowUpdated é gerado.
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 coluna DataTable que o DbDataAdapter faz referência para obter valores de parâmetro para a linha atual.
SourceColumn
refere-se ao nome da coluna não mapeada antes de qualquer mapeamento de tabela ter sido aplicado. Se SourceColumn
se referir a uma coluna inexistente, a ação executada dependerá de um dos seguintes valores de MissingMappingAction.
Valor de enumeração | Ação tomada |
---|---|
MissingMappingAction.Passthrough |
Use os nomes de coluna de origem e os nomes de tabela no DataSet se nenhum mapeamento estiver 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 mapear o valor para parâmetros de saída ou entrada/saída de volta para o DataSet
. Uma exceção será gerada se se referir a uma coluna inexistente.
A propriedade SourceVersion
da classe Parameter
de um provedor de dados do .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 verificar se há violações de simultaneidade otimistas.
Nota
Se ocorrer um erro durante a atualização de uma linha, uma exceção será gerada e a execução da atualização será descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro for encontrado, defina a propriedade ContinueUpdateOnError como true
antes de chamar Update. Você também pode responder a erros por linha dentro do evento RowUpdated
de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção no evento RowUpdated
, defina a propriedade Status do RowUpdatedEventArgs como Continue.
Confira também
- manipulação de dados (ADO.NET)
- DbProviderFactories (ADO.NET)
- visão geral ADO.NET
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 especificada de objetos DataRow.
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
- tableMapping
- DataTableMapping
A coleção TableMappings a ser usada.
Retornos
O número de linhas atualizadas com êxito da matriz de objetos DataRow.
Exceções
O DataSet é inválido.
A tabela de origem é inválida.
Não há DataRow para atualizar.
-ou-
Não há DataTable para atualizar.
-ou-
Não há DataSet para usar como origem.
Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registros afetados.
Comentários
Quando um aplicativo chama o método Update, o DbDataAdapter examina a propriedade RowState 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, em seguida, outra instrução DELETE, devido à ordenação das linhas no DataTable.
Observe que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o método GetChanges 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 método Update gerará uma exceção. No entanto, você pode criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única se definir 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 pelocommandBuilder
O método Update recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. O Update atualiza a linha usando o valor da propriedade UpdatedRowSource. Todas as linhas adicionais retornadas são ignoradas.
Depois que os dados são carregados novamente no DataSet, o evento OnRowUpdated é gerado, permitindo que o usuário inspecione a linha DataSet reconciliada e quaisquer parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações nessa linha são aceitas.
Ao usar Update, a ordem de execução é a seguinte:
Os valores no DataRow são movidos para os valores de parâmetro.
O evento OnRowUpdating é gerado.
O comando é executado.
Se o comando estiver definido como
FirstReturnedRecord
, o primeiro resultado retornado será colocado no DataRow.Se houver parâmetros de saída, eles serão colocados no DataRow.
O evento OnRowUpdated é gerado.
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 coluna DataTable que o DbDataAdapter faz referência para obter valores de parâmetro para a linha atual.
SourceColumn
refere-se ao nome da coluna não mapeada antes de qualquer mapeamento de tabela ter sido aplicado. Se SourceColumn
se referir a uma coluna inexistente, a ação executada dependerá de um dos seguintes valores de MissingMappingAction.
Valor de enumeração | Ação tomada |
---|---|
MissingMappingAction.Passthrough |
Use os nomes de coluna de origem e os nomes de tabela no DataSet se nenhum mapeamento estiver 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 mapear o valor para parâmetros de saída ou entrada/saída de volta para o DataSet
. Uma exceção será gerada se se referir a uma coluna inexistente.
A propriedade SourceVersion
da classe Parameter
de um provedor de dados do .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 verificar se há violações de simultaneidade otimistas.
Nota
Se ocorrer um erro durante a atualização de uma linha, uma exceção será gerada e a execução da atualização será descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro for encontrado, defina a propriedade ContinueUpdateOnError como true
antes de chamar Update. Você também pode responder a erros por linha dentro do evento RowUpdated
de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção no evento RowUpdated
, defina a propriedade Status do RowUpdatedEventArgs como Continue.
Confira também
- manipulação de dados (ADO.NET)
- DbProviderFactories (ADO.NET)
- visão geral ADO.NET
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 DataTableespecificado.
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
Retornos
O número de linhas atualizadas com êxito do DataTable.
Exceções
O DataSet é inválido.
A tabela de origem é inválida.
Não há DataRow para atualizar.
-ou-
Não há DataTable para atualizar.
-ou-
Não há DataSet para usar como origem.
Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registros afetados.
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 método Update, o DbDataAdapter examina a propriedade RowState 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, em seguida, outra instrução DELETE, devido à ordenação das linhas no DataTable.
Observe que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o método GetChanges 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 método Update gerará uma exceção. No entanto, você pode criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única se definir 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 pelocommandBuilder
O método Update recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. O Update atualiza a linha usando o valor da propriedade UpdatedRowSource. Todas as linhas adicionais retornadas são ignoradas.
Depois que os dados são carregados novamente no DataSet, o evento OnRowUpdated é gerado, permitindo que o usuário inspecione a linha DataSet reconciliada e quaisquer parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações nessa linha são aceitas.
Ao usar Update, a ordem de execução é a seguinte:
Os valores no DataRow são movidos para os valores de parâmetro.
O evento OnRowUpdating é gerado.
O comando é executado.
Se o comando estiver definido como
FirstReturnedRecord
, o primeiro resultado retornado será colocado no DataRow.Se houver parâmetros de saída, eles serão colocados no DataRow.
O evento OnRowUpdated é gerado.
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 coluna DataTable que o DbDataAdapter faz referência para obter valores de parâmetro para a linha atual.
SourceColumn
refere-se ao nome da coluna não mapeada antes de qualquer mapeamento de tabela ter sido aplicado. Se SourceColumn
se referir a uma coluna inexistente, a ação executada dependerá de um dos seguintes valores de MissingMappingAction.
Valor de enumeração | Ação tomada |
---|---|
MissingMappingAction.Passthrough |
Use os nomes de coluna de origem e os nomes de tabela no DataSet se nenhum mapeamento estiver 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 mapear o valor para parâmetros de saída ou entrada/saída de volta para o DataSet
. Uma exceção será gerada se se referir a uma coluna inexistente.
A propriedade SourceVersion
da classe Parameter
de um provedor de dados do .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 verificar se há violações de simultaneidade otimistas.
Nota
Se ocorrer um erro durante a atualização de uma linha, uma exceção será gerada e a execução da atualização será descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro for encontrado, defina a propriedade ContinueUpdateOnError como true
antes de chamar Update. Você também pode responder a erros por linha dentro do evento RowUpdated
de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção no evento RowUpdated
, defina a propriedade Status do RowUpdatedEventArgs como Continue.
Confira também
- manipulação de dados (ADO.NET)
- DbProviderFactories (ADO.NET)
- visão geral ADO.NET
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 DataSetespecificado.
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
Retornos
O número de linhas atualizadas com êxito 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 registros afetados.
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 método Update, o DbDataAdapter examina a propriedade RowState 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, em seguida, outra instrução DELETE, devido à ordenação das linhas no DataTable.
Observe que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o método GetChanges 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 método Update gerará uma exceção. No entanto, você pode criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única se definir 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 pelocommandBuilder
O método Update recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. O Update atualiza a linha usando o valor da propriedade UpdatedRowSource. Todas as linhas adicionais retornadas são ignoradas.
Depois que os dados são carregados novamente no DataSet, o evento OnRowUpdated é gerado, permitindo que o usuário inspecione a linha DataSet reconciliada e quaisquer parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações nessa linha são aceitas.
Ao usar Update, a ordem de execução é a seguinte:
Os valores no DataRow são movidos para os valores de parâmetro.
O evento OnRowUpdating é gerado.
O comando é executado.
Se o comando estiver definido como
FirstReturnedRecord
, o primeiro resultado retornado será colocado no DataRow.Se houver parâmetros de saída, eles serão colocados no DataRow.
O evento OnRowUpdated é gerado.
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 coluna DataTable que o DbDataAdapter faz referência para obter valores de parâmetro para a linha atual.
SourceColumn
refere-se ao nome da coluna não mapeada antes de qualquer mapeamento de tabela ter sido aplicado. Se SourceColumn
se referir a uma coluna inexistente, a ação executada dependerá de um dos seguintes valores de MissingMappingAction.
Valor de enumeração | Ação tomada |
---|---|
MissingMappingAction.Passthrough |
Use os nomes de coluna de origem e os nomes de tabela no DataSet se nenhum mapeamento estiver 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 mapear o valor para parâmetros de saída ou entrada/saída de volta para o DataSet
. Uma exceção será gerada se se referir a uma coluna inexistente.
A propriedade SourceVersion
da classe Parameter
de um provedor de dados do .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 verificar se há violações de simultaneidade otimistas.
Nota
Se ocorrer um erro durante a atualização de uma linha, uma exceção será gerada e a execução da atualização será descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro for encontrado, defina a propriedade ContinueUpdateOnError como true
antes de chamar Update. Você também pode responder a erros por linha dentro do evento RowUpdated
de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção no evento RowUpdated
, defina a propriedade Status do RowUpdatedEventArgs como Continue.
Confira também
- manipulação de dados (ADO.NET)
- DbProviderFactories (ADO.NET)
- visão geral ADO.NET
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
Retornos
O número de linhas atualizadas com êxito do DataSet.
Exceções
O DataSet é inválido.
A tabela de origem é inválida.
Não há DataRow para atualizar.
-ou-
Não há DataTable para atualizar.
-ou-
Não há DataSet para usar como origem.
Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registros afetados.
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 método Update, o DbDataAdapter examina a propriedade RowState 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, em seguida, outra instrução DELETE, devido à ordenação das linhas no DataTable.
Observe que essas instruções não são executadas como um processo em lote; cada linha é atualizada individualmente. Um aplicativo pode chamar o método GetChanges 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 método Update gerará uma exceção. No entanto, você pode criar um objeto SqlCommandBuilder ou OleDbCommandBuilder para gerar automaticamente instruções SQL para atualizações de tabela única se definir 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 pelocommandBuilder
O método Update recupera linhas da tabela listada no primeiro mapeamento antes de executar uma atualização. O Update atualiza a linha usando o valor da propriedade UpdatedRowSource. Todas as linhas adicionais retornadas são ignoradas.
Depois que os dados são carregados novamente no DataSet, o evento OnRowUpdated é gerado, permitindo que o usuário inspecione a linha DataSet reconciliada e quaisquer parâmetros de saída retornados pelo comando. Depois que uma linha é atualizada com êxito, as alterações nessa linha são aceitas.
Ao usar Update, a ordem de execução é a seguinte:
Os valores no DataRow são movidos para os valores de parâmetro.
O evento OnRowUpdating é gerado.
O comando é executado.
Se o comando estiver definido como
FirstReturnedRecord
, o primeiro resultado retornado será colocado no DataRow.Se houver parâmetros de saída, eles serão colocados no DataRow.
O evento OnRowUpdated é gerado.
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 coluna DataTable que o DbDataAdapter faz referência para obter valores de parâmetro para a linha atual.
SourceColumn
refere-se ao nome da coluna não mapeada antes de qualquer mapeamento de tabela ter sido aplicado. Se SourceColumn
se referir a uma coluna inexistente, a ação executada dependerá de um dos seguintes valores de MissingMappingAction.
Valor de enumeração | Ação tomada |
---|---|
MissingMappingAction.Passthrough |
Use os nomes de coluna de origem e os nomes de tabela no DataSet se nenhum mapeamento estiver 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 mapear o valor para parâmetros de saída ou entrada/saída de volta para o DataSet
. Uma exceção será gerada se se referir a uma coluna inexistente.
A propriedade SourceVersion
da classe Parameter
de um provedor de dados do .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 verificar se há violações de simultaneidade otimistas.
Nota
Se ocorrer um erro durante a atualização de uma linha, uma exceção será gerada e a execução da atualização será descontinuada. Para continuar a operação de atualização sem gerar exceções quando um erro for encontrado, defina a propriedade ContinueUpdateOnError como true
antes de chamar Update. Você também pode responder a erros por linha dentro do evento RowUpdated
de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção no evento RowUpdated
, defina a propriedade Status do RowUpdatedEventArgs como Continue.
Confira também
- manipulação de dados (ADO.NET)
- DbProviderFactories (ADO.NET)
- visão geral ADO.NET