DbDataAdapter.Update Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada na DataSetlinha .
Sobrecargas
| Name | Description |
|---|---|
| Update(DataSet, String) |
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada com DataSet o nome especificado DataTable . |
| Update(DataRow[], DataTableMapping) |
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada no array especificado de DataRow objetos. |
| Update(DataTable) |
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada na linha especificada DataTable. |
| Update(DataSet) |
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada na linha especificada DataSet. |
| Update(DataRow[]) |
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada no array especificado no DataSet. |
Update(DataSet, String)
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 fonte a usar para mapeamento de tabelas.
Devoluções
O número de linhas atualizado com sucesso a partir do DataSetarquivo .
Exceções
É DataSet inválido.
A tabela de origem é inválida.
Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registos afetados.
Exemplos
O exemplo seguinte utiliza 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
Observações
Quando uma aplicação chama o Update método, examina DbDataAdapter a RowState propriedade e executa iterativamente as instruções INSERT, UPDATE ou DELETE exigidas para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida de uma instrução INSERT, e depois outra instrução DELETE, devido à ordem das linhas no DataTable.
Deve notar-se que estas declarações não são realizadas como um processo em lote; Cada linha é atualizada individualmente. Uma aplicação pode chamar o GetChanges método em situações em que deve controlar a sequência dos tipos de instruções (por exemplo, INSERT antes do UPDATE). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.
Se as instruções INSERT, UPDATE ou DELETE não forem especificadas, o Update método gera uma exceção. No entanto, 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 fornecedor de dados .NET Framework. Depois, quaisquer instruções SQL adicionais que não definas são geradas pelo CommandBuilder. Esta lógica de geração exige que a informação da coluna chave esteja presente no DataSet. Para mais informações, consulte Geração de Comandos com CommandBuilders.
O Update método suporta cenários em que contém DataSet múltiplos DataTable objetos cujos nomes diferem apenas consoante o caso. Quando existem múltiplas tabelas com o mesmo nome, mas caso diferente, num DataSet, Update realiza uma comparação sensível a maiúsculos e minúsculos para encontrar a tabela correspondente, e gera uma exceção se não existir correspondência exata. O seguinte código C# ilustra este 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 é atualizado. Neste cenário, a comparação não distingue minúsculas e maiúsculas. O seguinte código C# ilustra este 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 realizar uma atualização. Depois Update atualiza a linha usando o valor da UpdatedRowSource propriedade. Quaisquer linhas adicionais devolvidas são ignoradas.
Depois de qualquer dado ser carregado novamente no DataSet, o OnRowUpdated evento é levantado, permitindo ao utilizador inspecionar a linha reconciliada DataSet e quaisquer parâmetros de saída devolvidos pelo comando. Depois de uma linha ser atualizada com sucesso, as alterações a essa linha são aceites.
Ao usar Update, a ordem de execução é a seguinte:
Os valores em são DataRow movidos para os valores dos parâmetros.
O evento OnRowUpdating é acionado.
A ordem é executada.
Se o comando for definido para
FirstReturnedRecord, então o primeiro resultado devolvido é colocado no DataRow.Se existirem parâmetros de saída, eles são colocados no DataRow.
O evento OnRowUpdated é acionado.
AcceptChanges é invocado.
Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada. Os parâmetros são mapeados para a linha atual através das propriedades SourceColumn e SourceVersion da classe Parameter do fornecedor de dados do .NET Framework.
SourceColumn refere-se a uma DataTable coluna que a DbDataAdapter referência para obter valores de parâmetros 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 tomada depende de um dos seguintes MissingMappingAction valores.
| Valor de enumeração | Medidas tomadas |
|---|---|
MissingMappingAction.Passthrough |
Use os nomes das colunas de origem e os nomes das tabelas se DataSet não houver mapeamento presente. |
MissingMappingAction.Ignore |
A SystemException é gerado. Quando os mapeamentos são explicitamente definidos, um mapeamento em falta para um parâmetro de entrada é geralmente resultado de um erro. |
MissingMappingAction.Error |
A SystemException é gerado. |
A SourceColumn propriedade também é usada para mapear o valor dos parâmetros de saída ou entrada/saída de volta ao DataSet. É gerada uma exceção se se referir a uma coluna inexistente.
A propriedade SourceVersion da classe Parameter de um fornecedor de dados do .NET Framework determina se deve usar a versão Original, Atual ou Proposta do valor da coluna. Esta capacidade é frequentemente usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para verificar violações de concorrência otimista.
Note
Se ocorrer um erro durante a atualização de uma linha, é lançada uma exceção e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando é encontrado um erro, defina a ContinueUpdateOnError propriedade para true antes de chamar Update. Também pode responder a erros por linha no RowUpdated caso de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro do RowUpdated evento, defina a Status propriedade do RowUpdatedEventArgs para Continue.
Ver também
Aplica-se a
Update(DataRow[], DataTableMapping)
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada no array especificado de DataRow objetos.
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 TableMappings coleção a usar.
Devoluções
O número de linhas atualizadas com sucesso a partir do array de DataRow objetos.
Exceções
É DataSet inválido.
A tabela de origem é inválida.
Não existe nenhum DataRow para atualizar.
-ou-
Não existe nenhum DataTable para atualizar.
-ou-
Não existe nenhum DataSet para usar como fonte.
Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registos afetados.
Observações
Quando uma aplicação chama o Update método, examina DbDataAdapter a RowState propriedade e executa iterativamente as instruções INSERT, UPDATE ou DELETE exigidas para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida de uma instrução INSERT, e depois outra instrução DELETE, devido à ordem das linhas no DataTable.
Deve notar-se que estas declarações não são realizadas como um processo em lote; Cada linha é atualizada individualmente. Uma aplicação pode chamar o GetChanges método em situações em que é necessário controlar a sequência dos tipos de instruções (por exemplo, INSERTs antes das UPDATEs). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.
Se as instruções INSERT, UPDATE ou DELETE não forem especificadas, o Update método gera uma exceção. No entanto, 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 fornecedor de dados .NET Framework. Depois, quaisquer instruções SQL adicionais que não definas são geradas pelo CommandBuilder. Esta lógica de geração exige que a informação da coluna chave esteja presente no DataSet. Para mais informações, consulte Geração de Comandos com CommandBuilders.
O Update método recupera linhas da tabela listada no primeiro mapeamento antes de realizar uma atualização. Depois Update atualiza a linha usando o valor da UpdatedRowSource propriedade. Quaisquer linhas adicionais devolvidas são ignoradas.
Depois de qualquer dado ser carregado novamente no DataSet, o OnRowUpdated evento é levantado, permitindo ao utilizador inspecionar a linha reconciliada DataSet e quaisquer parâmetros de saída devolvidos pelo comando. Depois de uma linha ser atualizada com sucesso, as alterações a essa linha são aceites.
Ao usar Update, a ordem de execução é a seguinte:
Os valores em são DataRow movidos para os valores dos parâmetros.
O evento OnRowUpdating é acionado.
A ordem é executada.
Se o comando for definido para
FirstReturnedRecord, então o primeiro resultado devolvido é colocado no DataRow.Se existirem parâmetros de saída, eles são colocados no DataRow.
O evento OnRowUpdated é acionado.
AcceptChanges é invocado.
Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada. Os parâmetros são mapeados para a linha atual através das propriedades SourceColumn e SourceVersion da classe Parameter do fornecedor de dados do .NET Framework.
SourceColumn refere-se a uma DataTable coluna que a DbDataAdapter referência para obter valores de parâmetros 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 tomada depende de um dos seguintes MissingMappingAction valores.
| Valor de enumeração | Medidas tomadas |
|---|---|
MissingMappingAction.Passthrough |
Use os nomes das colunas de origem e os nomes das tabelas se DataSet não houver mapeamento presente. |
MissingMappingAction.Ignore |
A SystemException é gerado. Quando os mapeamentos são explicitamente definidos, um mapeamento em falta para um parâmetro de entrada é geralmente resultado de um erro. |
MissingMappingAction.Error |
A SystemException é gerado. |
A SourceColumn propriedade também é usada para mapear o valor dos parâmetros de saída ou entrada/saída de volta ao DataSet. É gerada uma exceção se se referir a uma coluna inexistente.
A propriedade SourceVersion da classe Parameter de um fornecedor de dados do .NET Framework determina se deve usar a versão Original, Atual ou Proposta do valor da coluna. Esta capacidade é frequentemente usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para verificar violações de concorrência otimista.
Note
Se ocorrer um erro durante a atualização de uma linha, é lançada uma exceção e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando é encontrado um erro, defina a ContinueUpdateOnError propriedade para true antes de chamar Update. Também pode responder a erros por linha no RowUpdated caso de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro do RowUpdated evento, defina a Status propriedade do RowUpdatedEventArgs para Continue.
Ver também
Aplica-se a
Update(DataTable)
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada na linha especificada DataTable.
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
Devoluções
O número de linhas atualizado com sucesso a partir do DataTablearquivo .
Exceções
É DataSet inválido.
A tabela de origem é inválida.
Não existe nenhum DataRow para atualizar.
-ou-
Não existe nenhum DataTable para atualizar.
-ou-
Não existe nenhum DataSet para usar como fonte.
Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registos afetados.
Exemplos
O exemplo seguinte utiliza 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
Observações
Quando uma aplicação chama o Update método, examina DbDataAdapter a RowState propriedade e executa iterativamente as instruções INSERT, UPDATE ou DELETE exigidas para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida de uma instrução INSERT, e depois outra instrução DELETE, devido à ordem das linhas no DataTable.
Deve notar-se que estas declarações não são realizadas como um processo em lote; Cada linha é atualizada individualmente. Uma aplicação pode chamar o GetChanges método em situações em que é necessário controlar a sequência dos tipos de instruções (por exemplo, INSERTs antes das UPDATEs). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.
Se as instruções INSERT, UPDATE ou DELETE não forem especificadas, o Update método gera uma exceção. No entanto, 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 fornecedor de dados .NET Framework. Depois, quaisquer instruções SQL adicionais que não definas são geradas pelo CommandBuilder. Esta lógica de geração exige que a informação da coluna chave esteja presente no DataSet. Para mais informações, consulte Geração de Comandos com CommandBuilders.
O Update método recupera linhas da tabela listada no primeiro mapeamento antes de realizar uma atualização. Depois Update atualiza a linha usando o valor da UpdatedRowSource propriedade. Quaisquer linhas adicionais devolvidas são ignoradas.
Depois de qualquer dado ser carregado novamente no DataSet, o OnRowUpdated evento é levantado, permitindo ao utilizador inspecionar a linha reconciliada DataSet e quaisquer parâmetros de saída devolvidos pelo comando. Depois de uma linha ser atualizada com sucesso, as alterações a essa linha são aceites.
Ao usar Update, a ordem de execução é a seguinte:
Os valores em são DataRow movidos para os valores dos parâmetros.
O evento OnRowUpdating é acionado.
A ordem é executada.
Se o comando for definido para
FirstReturnedRecord, então o primeiro resultado devolvido é colocado no DataRow.Se existirem parâmetros de saída, eles são colocados no DataRow.
O evento OnRowUpdated é acionado.
AcceptChanges é invocado.
Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada. Os parâmetros são mapeados para a linha atual através das propriedades SourceColumn e SourceVersion da classe Parameter do fornecedor de dados do .NET Framework.
SourceColumn refere-se a uma DataTable coluna que a DbDataAdapter referência para obter valores de parâmetros 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 tomada depende de um dos seguintes MissingMappingAction valores.
| Valor de enumeração | Medidas tomadas |
|---|---|
MissingMappingAction.Passthrough |
Use os nomes das colunas de origem e os nomes das tabelas se DataSet não houver mapeamento presente. |
MissingMappingAction.Ignore |
A SystemException é gerado. Quando os mapeamentos são explicitamente definidos, um mapeamento em falta para um parâmetro de entrada é geralmente resultado de um erro. |
MissingMappingAction.Error |
A SystemException é gerado. |
A SourceColumn propriedade também é usada para mapear o valor dos parâmetros de saída ou entrada/saída de volta ao DataSet. É gerada uma exceção se se referir a uma coluna inexistente.
A propriedade SourceVersion da classe Parameter de um fornecedor de dados do .NET Framework determina se deve usar a versão Original, Atual ou Proposta do valor da coluna. Esta capacidade é frequentemente usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para verificar violações de concorrência otimista.
Note
Se ocorrer um erro durante a atualização de uma linha, é lançada uma exceção e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando é encontrado um erro, defina a ContinueUpdateOnError propriedade para true antes de chamar Update. Também pode responder a erros por linha no RowUpdated caso de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro do RowUpdated evento, defina a Status propriedade do RowUpdatedEventArgs para Continue.
Ver também
Aplica-se a
Update(DataSet)
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada na linha especificada DataSet.
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
Devoluções
O número de linhas atualizado com sucesso a partir do DataSetarquivo .
Implementações
Exceções
A tabela de origem é inválida.
Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registos afetados.
Exemplos
O exemplo seguinte utiliza 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
Observações
Quando uma aplicação chama o Update método, examina DbDataAdapter a RowState propriedade e executa iterativamente as instruções INSERT, UPDATE ou DELETE exigidas para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida de uma instrução INSERT, e depois outra instrução DELETE, devido à ordem das linhas no DataTable.
Deve notar-se que estas declarações não são realizadas como um processo em lote; Cada linha é atualizada individualmente. Uma aplicação pode chamar o GetChanges método em situações em que é necessário controlar a sequência dos tipos de instruções (por exemplo, INSERTs antes das UPDATEs). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.
Se as instruções INSERT, UPDATE ou DELETE não forem especificadas, o Update método gera uma exceção. No entanto, 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 fornecedor de dados .NET Framework. Depois, quaisquer instruções SQL adicionais que não definas são geradas pelo CommandBuilder. Esta lógica de geração exige que a informação da coluna chave esteja presente no DataSet. Para mais informações, consulte Geração de Comandos com CommandBuilders.
O Update método recupera linhas da tabela listada no primeiro mapeamento antes de realizar uma atualização. Depois Update atualiza a linha usando o valor da UpdatedRowSource propriedade. Quaisquer linhas adicionais devolvidas são ignoradas.
Depois de qualquer dado ser carregado novamente no DataSet, o OnRowUpdated evento é levantado, permitindo ao utilizador inspecionar a linha reconciliada DataSet e quaisquer parâmetros de saída devolvidos pelo comando. Depois de uma linha ser atualizada com sucesso, as alterações a essa linha são aceites.
Ao usar Update, a ordem de execução é a seguinte:
Os valores em são DataRow movidos para os valores dos parâmetros.
O evento OnRowUpdating é acionado.
A ordem é executada.
Se o comando for definido para
FirstReturnedRecord, então o primeiro resultado devolvido é colocado no DataRow.Se existirem parâmetros de saída, eles são colocados no DataRow.
O evento OnRowUpdated é acionado.
AcceptChanges é invocado.
Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada. Os parâmetros são mapeados para a linha atual através das propriedades SourceColumn e SourceVersion da classe Parameter do fornecedor de dados do .NET Framework.
SourceColumn refere-se a uma DataTable coluna que a DbDataAdapter referência para obter valores de parâmetros 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 tomada depende de um dos seguintes MissingMappingAction valores.
| Valor de enumeração | Medidas tomadas |
|---|---|
MissingMappingAction.Passthrough |
Use os nomes das colunas de origem e os nomes das tabelas se DataSet não houver mapeamento presente. |
MissingMappingAction.Ignore |
A SystemException é gerado. Quando os mapeamentos são explicitamente definidos, um mapeamento em falta para um parâmetro de entrada é geralmente resultado de um erro. |
MissingMappingAction.Error |
A SystemException é gerado. |
A SourceColumn propriedade também é usada para mapear o valor dos parâmetros de saída ou entrada/saída de volta ao DataSet. É gerada uma exceção se se referir a uma coluna inexistente.
A propriedade SourceVersion da classe Parameter de um fornecedor de dados do .NET Framework determina se deve usar a versão Original, Atual ou Proposta do valor da coluna. Esta capacidade é frequentemente usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para verificar violações de concorrência otimista.
Note
Se ocorrer um erro durante a atualização de uma linha, é lançada uma exceção e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando é encontrado um erro, defina a ContinueUpdateOnError propriedade para true antes de chamar Update. Também pode responder a erros por linha no RowUpdated caso de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro do RowUpdated evento, defina a Status propriedade do RowUpdatedEventArgs para Continue.
Ver também
Aplica-se a
Update(DataRow[])
Atualiza os valores na base de dados executando as respetivas instruções INSERT, UPDATE ou DELETE para cada linha inserida, atualizada ou eliminada no array especificado 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
Devoluções
O número de linhas atualizado com sucesso a partir do DataSetarquivo .
Exceções
É DataSet inválido.
A tabela de origem é inválida.
Não existe nenhum DataRow para atualizar.
-ou-
Não existe nenhum DataTable para atualizar.
-ou-
Não existe nenhum DataSet para usar como fonte.
Uma tentativa de executar uma instrução INSERT, UPDATE ou DELETE resultou em zero registos afetados.
Exemplos
O exemplo seguinte utiliza 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
Observações
Quando uma aplicação chama o Update método, examina DbDataAdapter a RowState propriedade e executa iterativamente as instruções INSERT, UPDATE ou DELETE exigidas para cada linha, com base na ordem dos índices configurados no DataSet. Por exemplo, Update pode executar uma instrução DELETE, seguida de uma instrução INSERT, e depois outra instrução DELETE, devido à ordem das linhas no DataTable.
Deve notar-se que estas declarações não são realizadas como um processo em lote; Cada linha é atualizada individualmente. Uma aplicação pode chamar o GetChanges método em situações em que é necessário controlar a sequência dos tipos de instruções (por exemplo, INSERTs antes das UPDATEs). Para obter mais informações, consulte Atualizando fontes de dados com DataAdapters.
Se as instruções INSERT, UPDATE ou DELETE não forem especificadas, o Update método gera uma exceção. No entanto, 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 fornecedor de dados .NET Framework. Depois, quaisquer instruções SQL adicionais que não definas são geradas pelo CommandBuilder. Esta lógica de geração exige que a informação da coluna chave esteja presente no DataSet. Para mais informações, consulte Geração de Comandos com CommandBuilders.
O Update método recupera linhas da tabela listada no primeiro mapeamento antes de realizar uma atualização. Depois Update atualiza a linha usando o valor da UpdatedRowSource propriedade. Quaisquer linhas adicionais devolvidas são ignoradas.
Depois de qualquer dado ser carregado novamente no DataSet, o OnRowUpdated evento é levantado, permitindo ao utilizador inspecionar a linha reconciliada DataSet e quaisquer parâmetros de saída devolvidos pelo comando. Depois de uma linha ser atualizada com sucesso, as alterações a essa linha são aceites.
Ao usar Update, a ordem de execução é a seguinte:
Os valores em são DataRow movidos para os valores dos parâmetros.
O evento OnRowUpdating é acionado.
A ordem é executada.
Se o comando for definido para
FirstReturnedRecord, o primeiro resultado devolvido é colocado no DataRow.Se existirem parâmetros de saída, eles são colocados no DataRow.
O evento OnRowUpdated é acionado.
AcceptChanges é invocado.
Cada comando associado ao DbDataAdapter geralmente tem uma coleção de parâmetros associada. Os parâmetros são mapeados para a linha atual através das propriedades SourceColumn e SourceVersion da classe Parameter do fornecedor de dados do .NET Framework.
SourceColumn refere-se a uma DataTable coluna que a DbDataAdapter referência para obter valores de parâmetros 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 tomada depende de um dos seguintes MissingMappingAction valores.
| Valor de enumeração | Medidas tomadas |
|---|---|
MissingMappingAction.Passthrough |
Use os nomes das colunas de origem e os nomes das tabelas se DataSet não houver mapeamento presente. |
MissingMappingAction.Ignore |
A SystemException é gerado. Quando os mapeamentos são explicitamente definidos, um mapeamento em falta para um parâmetro de entrada é geralmente resultado de um erro. |
MissingMappingAction.Error |
A SystemException é gerado. |
A SourceColumn propriedade também é usada para mapear o valor dos parâmetros de saída ou entrada/saída de volta ao DataSet. É gerada uma exceção se se referir a uma coluna inexistente.
A propriedade SourceVersion da classe Parameter de um fornecedor de dados do .NET Framework determina se deve usar a versão Original, Atual ou Proposta do valor da coluna. Esta capacidade é frequentemente usada para incluir valores originais na cláusula WHERE de uma instrução UPDATE para verificar violações de concorrência otimista.
Note
Se ocorrer um erro durante a atualização de uma linha, é lançada uma exceção e a execução da atualização é descontinuada. Para continuar a operação de atualização sem gerar exceções quando é encontrado um erro, defina a ContinueUpdateOnError propriedade para true antes de chamar Update. Também pode responder a erros por linha no RowUpdated caso de um DataAdapter. Para continuar a operação de atualização sem gerar uma exceção dentro do RowUpdated evento, defina a Status propriedade do RowUpdatedEventArgs para Continue.