IDataAdapter.Update(DataSet) 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.
public:
int Update(System::Data::DataSet ^ dataSet);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public int Update(System.Data.DataSet dataSet);
public int Update(System.Data.DataSet dataSet);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
abstract member Update : System.Data.DataSet -> int
abstract member Update : System.Data.DataSet -> int
Public Function Update (dataSet As DataSet) As Integer
Parâmetros
Devoluções
O número de linhas atualizado com sucesso a partir do DataSetarquivo .
- Atributos
Exceções
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 Update a fonte de dados. Este exemplo assume que criou um OleDbDataAdapter e um DataSet.
static private DataSet CreateCommandAndUpdate(
string connectionString,
string queryString)
{
DataSet dataSet = new DataSet();
using (OleDbConnection connection =
new OleDbConnection(connectionString))
{
connection.Open();
OleDbDataAdapter adapter =
new OleDbDataAdapter();
adapter.SelectCommand =
new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder =
new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet);
// Code to modify data in the DataSet here.
// Without the OleDbCommandBuilder, this line would fail.
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(dataSet);
}
return dataSet;
}
Public Function CreateCommandAndUpdate( _
ByVal connectionString As String, _
ByVal queryString As String) As DataSet
Dim dataSet As New DataSet()
Using connection As New OleDbConnection(connectionString)
connection.Open()
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand( _
queryString, connection)
Dim builder As OleDbCommandBuilder = _
New OleDbCommandBuilder(adapter)
adapter.Fill(dataSet)
' Code to modify the data in the DataSet here.
' Without the OleDbCommandBuilder this line would fail.
builder.GetUpdateCommand()
adapter.Update(dataSet)
End Using
Return dataSet
End Function
Observações
Quando uma aplicação chama o Update método, examina IDataAdapter 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.
Tenha em atenção 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 se tiver de 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 IDataAdapter 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 IDataAdapter 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 | Ação Tomada |
|---|---|
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 causado por 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 do fornecedor de dados do .NET Framework determina se deve usar a versão Original, Current ou Proposed 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 optimistas.
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.