Personas que lo han encontrado útil: 0 de 2 - Valorar este tema

DataAdapter.Update (Método)

Llama a las instrucciones INSERT, UPDATE o DELETE respectivas para cada fila insertada, actualizada o eliminada en el objeto DataSet especificado a partir de un objeto DataTable denominado "Table".

Espacio de nombres: System.Data.Common
Ensamblado: System.Data (en system.data.dll)

public virtual int Update (
	DataSet dataSet
)
public int Update (
	DataSet dataSet
)
public function Update (
	dataSet : DataSet
) : int

Parámetros

dataSet

Objeto DataSet que se utiliza para actualizar el origen de datos.

Valor devuelto

Número de filas del DataSet actualizadas correctamente.
Tipo de excepción Condición

InvalidOperationException

La tabla de origen no es válida.

DBConcurrencyException

Ningún registro ha resultado afectado al intentar ejecutar una instrucción INSERT, UPDATE o DELETE.

Cuando una aplicación llama al método Update, el objeto DataAdapter examina la propiedad RowState y ejecuta de forma iterativa las instrucciones INSERT, UPDATE o DELETE necesarias para cada fila, de acuerdo con el orden de los índices configurados en el objeto DataSet. Por ejemplo, Update puede ejecutar una instrucción DELETE, seguida de una instrucción INSERT y, a continuación, otra instrucción DELETE, debido al orden de las filas en el objeto DataTable.

Se debe tener en cuenta que estas instrucciones no se realizan como un proceso por lotes, ya que cada fila se actualiza individualmente. Una aplicación puede llamar al método GetChanges en situaciones en las que se debe controlar la secuencia de tipos de instrucciones (por ejemplo, las instrucciones INSERT antes que las UPDATE). Para obtener más información, vea Actualizar orígenes de datos con DataAdapters.

Si no se han especificado las instrucciones INSERT, UPDATE o DELETE, el método Update genera una excepción. Sin embargo, es posible crear objetos SqlCommandBuilder o OleDbCommandBuilder que generen automáticamente instrucciones SQL para actualizaciones de una sola tabla, si se establece la propiedad SelectCommand de un proveedor de datos de .NET Framework. En este caso, CommandBuilder generará todas las instrucciones SQL adicionales que no se hayan establecido. Esta lógica de generación requiere que haya información sobre las columnas de clave en DataSet. Para obtener más información, vea Generar comandos automáticamente.

El método Update recupera las filas de la tabla enumeradas en la primera asignación antes de realizar una actualización. A continuación, el método Update actualiza la fila con el valor de la propiedad UpdatedRowSource. Se omite cualquier fila adicional devuelta.

Una vez que todos los datos se vuelven a cargar en el DataSet, se provoca el evento OnRowUpdated, lo que permite al usuario inspeccionar la fila del DataSet reconciliada y cualquier parámetro de salida devuelto por el comando. Tras la actualización correcta de una fila, se aceptan los cambios realizados en ella.

Al utilizar Update, el orden de ejecución es el siguiente:

  1. Los valores de DataRow se trasladan a los valores de parámetro.

  2. Se provoca el evento OnRowUpdating.

  3. Se ejecuta el comando.

  4. Si el comando se establece en FirstReturnedRecord, el primer resultado devuelto se coloca en el objeto DataRow.

  5. Si hay parámetros de salida, se colocan en el objeto DataRow.

  6. Se provoca el evento OnRowUpdated.

  7. Se llama a AcceptChanges.

Cada comando asociado al objeto DataAdapter suele tener una colección de parámetros asociada a él. Los parámetros se asignan a la fila actual mediante las propiedades SourceColumn y SourceVersion de la clase Parameter de un proveedor de datos de .NET. SourceColumn es una columna de DataTable a la que DataAdapter hace referencia para obtener los valores de los parámetros de la fila actual.

SourceColumn hace referencia al nombre de columna no asignado antes de que se haya aplicado cualquier asignación de tabla. Si SourceColumn hace referencia a una columna que no existe, la acción que se emprenda dependerá de uno de los siguientes valores de MissingMappingAction.

Valor de enumeración

Acción emprendida

MissingMappingAction.Passthrough

Si no hay ninguna asignación, utiliza los nombres de las columnas y de las tablas de origen del objeto DataSet.

MissingMappingAction.Ignore

Se genera SystemException. Cuando las asignaciones se establecen de forma explícita, la falta de una asignación para un parámetro de entrada suele dar como resultado un error.

MissingMappingAction.Error

Se genera SystemException.

La propiedad SourceColumn también se utiliza para volver a asignar el valor de los parámetros de salida o de entrada y salida a DataSet. Si se hace referencia a una columna que no existe, se genera una excepción.

La propiedad SourceVersion de la clase Parameter de un proveedor de datos de .NET determina si se utiliza la versión Original, Current o Proposed del valor de la columna. Esta capacidad se utiliza a menudo para incluir valores originales en la cláusula WHERE de una instrucción UPDATE, con el fin de comprobar las infracciones de concurrencia optimista.

NotaNota

Si se produce un error al actualizar la fila, se genera una excepción y se cancela la ejecución de la actualización. Para reanudar la operación de actualización sin que se generen excepciones cuando se detecte un error, establezca la propiedad ContinueUpdateOnError en true antes de llamar a Update. También puede responder a los errores fila por fila dentro del evento RowUpdated de un objeto DataAdapter. Para reanudar la operación de actualización sin que se genere una excepción dentro del evento RowUpdated, establezca la propiedad Status de RowUpdatedEventArgs en Continue.

En el ejemplo siguiente se utiliza la clase derivada OleDbDataAdapter para actualizar el origen de datos mediante Update.

static private DataSet CreateCommandAndUpdate(
    string connectionString,
    string queryString)
{
    DataSet dataSet = new DataSet();

    using (OleDbConnection connection =
               new OleDbConnection(connectionString))
    {
        connection.Open();
        OleDbDataAdapter dataAdapter =
            new OleDbDataAdapter();
        dataAdapter.SelectCommand =
            new OleDbCommand(queryString, connection);
        OleDbCommandBuilder commandBuilder =
            new OleDbCommandBuilder(dataAdapter);

        dataAdapter.Fill(dataSet);

        // Code to modify data in the DataSet here.

        //Without the OleDbCommandBuilder this line would fail.
        dataAdapter.Update(dataSet);
    }
    return dataSet;
}

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar