Esta documentación está archivada y no tiene mantenimiento.

Cómo: Actualizar los registros de una base de datos

Puede utilizar el método TableAdapter.Update para actualizar (editar) los registros de una base de datos. El método TableAdapter.Update proporciona varias sobrecargas que realizan diferentes operaciones en función de los parámetros que se envían. Resulta importante comprender los resultados de llamar a estas firmas de método diferentes.

NoteNota

Si su aplicación no utiliza TableAdapters, puede utilizar objetos de comando para actualizar los registros de su base de datos (por ejemplo, ExecuteNonQuery). Para obtener más información sobre cómo actualizar datos con objetos de comando, vea "Actualizar registros mediante objetos de comando" más adelante.

La tabla siguiente describe el comportamiento de los distintos métodos TableAdapter.Update:

Método Descripción

TableAdapter.Update(DataTable)

Intenta guardar todos los cambios en DataTable en la base de datos. (Incluye quitar filas eliminadas de la tabla, agregar filas insertadas en la tabla y actualizar filas que han cambiado en la tabla.)

TableAdapter.Update(DataSet)

Aunque el parámetro toma un conjunto de datos, el TableAdapter intenta guardar todos los cambios en el objeto DataTable asociado del TableAdapter en la base de datos. (Incluye quitar filas eliminadas de la tabla, agregar filas insertadas en la tabla y actualizar filas que han cambiado en la tabla.)

NoteNota

El objeto DataTable asociado de un TableAdapter es el objeto DataTable creado durante la configuración original del TableAdapter.

TableAdapter.Update(DataRow)

Intenta guardar todos los cambios en el objeto DataRow indicado en la base de datos.

TableAdapter.Update(DataRows())

Intenta guardar los cambios en cualquier fila de la matriz de DataRows en la base de datos.

TableAdapter.Update("new column values", "original column values")

Intenta guardar los cambios en una fila única que se identifica por los valores de columna originales.

Normalmente utiliza el método TableAdapter.Update que toma DataSet, DataTable o DataRow cuando su aplicación utiliza exclusivamente conjuntos de datos para almacenar los datos.

Normalmente utiliza el método TableAdapter.Update que toma valores de columna cuando su aplicación utiliza objetos para almacenar los datos.

Si el TableAdapter no dispone de un método Update que toma valores de columna, significa que el TableAdapter está configurado para utilizar procedimientos almacenados o que su propiedad GenerateDBDirectMethods está establecida en false. Pruebe a establecer la propiedad GenerateDBDirectMethods de TableAdapter en true desde el Diseñador de Dataset y guarde el conjunto de datos para volver a generar el TableAdapter. Si aun así el TableAdapter no dispone de un método Update que toma valores de columna, probablemente la tabla no proporciona información suficiente para distinguir entre filas individuales (por ejemplo, la tabla no dispone de clave principal).

Actualizar registros existentes mediante TableAdapters

Los TableAdapters proporcionan maneras diferentes de actualizar los registros de una base de datos en función de los requisitos de su aplicación.

Si la aplicación utiliza conjuntos de datos para almacenar los datos, puede actualizar los registros en el objeto DataTable que desee, llamar al método TableAdapter.Update y pasar los objetos DataSet, DataTable, DataRow o una matriz de DataRows. La tabla anterior describe los diferentes métodos Update.

Para actualizar registros de una base de datos con el método TableAdapter.Update que toma DataSet, DataTable, DataRow o DataRows()

  1. Edite los registros en el objeto DataTable deseado editando directamente el objeto DataRow en DataTable. Para obtener más información, vea Cómo: Editar filas en un objeto DataTable.

  2. Después de que las filas se editen en DataTable, llame al método TableAdapter.Update. Puede controlar la cantidad de datos que se actualizan pasando un objeto DataSet completo, un objeto DataTable, una matriz de DataRows o un único objeto DataRow.

    En el código siguiente se muestra cómo editar un registro en un objeto DataTable y cómo llamar al método TableAdapter.Update para guardar los cambios en la base de datos. (En este ejemplo se utiliza la tabla Region de la base de datos Northwind.)

    // Locate the row you want to update.
    NorthwindDataSet.RegionRow regionRow;
    regionRow = northwindDataSet.Region.FindByRegionID(1);
    
    // Assign the new value to the desired column.
    regionRow.RegionDescription = "East";
    
    // Save the updated row to the database.
    this.regionTableAdapter.Update(this.northwindDataSet.Region);
    
    
    // Locate the row you want to update.
    NorthwindDataSet.RegionRow regionRow;
    regionRow = this.northwindDataSet.get_Region().FindByRegionID(1);
    
    // Assign the new value to the desired column.
    regionRow.set_RegionDescription("East");
    
    // Save the updated row to the database.
    this.northwindDataSetRegionTableAdapter.Update(
        this.northwindDataSet.get_Region());
    
    

Si la aplicación utiliza objetos para almacenar los datos, puede utilizar los métodos DBDirect del TableAdapter para enviar datos de los objetos directamente a la base de datos. Estos métodos permiten pasar valores individuales de cada columna como parámetros de método. Al llamar a este método, se actualiza un registro existente en la base de datos con los valores de columna pasados en el método.

El procedimiento siguiente utiliza la tabla Region de Northwind como un ejemplo.

Para actualizar los registros de una base de datos utilizando el método TableAdapter.Update que toma valores de columna

  • Llame al método Update del TableAdapter, pasando los valores nuevos y originales de cada columna como parámetros.

    NoteNota

    Si no tiene una instancia disponible, cree una instancia de TableAdapter que desee utilizar.

    NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
        new NorthwindDataSetTableAdapters.RegionTableAdapter();
    
    regionTableAdapter.Update(1, "East", 1, "Eastern");
    
    
    NorthwindDataSetRegionTableAdapter regionTableAdapter =
          new NorthwindDataSetRegionTableAdapter();
    
    regionTableAdapter.Update(1, "East", 1, "Eastern");
    
    

Actualizar registros mediante objetos de comando

El ejemplo siguiente actualiza directamente los registros existentes en una base de datos utilizando objetos de comando. Para obtener más información sobre el uso de objetos de comando para ejecutar comandos y procedimientos almacenados, vea Buscar datos en la aplicación.

El procedimiento siguiente utiliza la tabla Region de Northwind como un ejemplo.

Para actualizar registros existentes en una base de datos utilizando objetos de comando

  • Cree un nuevo objeto de comando; establezca sus propiedades Connection, CommandType y CommandText y, a continuación, abra una conexión y ejecute el comando.

    System.Data.SqlClient.SqlConnection sqlConnection1 = 
        new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");
    
    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "UPDATE Region SET RegionID = 1, RegionDescription = 'East' WHERE RegionID = 1";
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    cmd.ExecuteNonQuery();
    sqlConnection1.Close();
    
    
    System.Data.SqlClient.SqlConnection sqlConnection1 =
          new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");
    
    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
    cmd.set_CommandType(System.Data.CommandType.Text);
    cmd.set_CommandText("UPDATE Region SET RegionID = 1, RegionDescription = 'East' WHERE RegionID = 1");
    cmd.set_Connection(sqlConnection1);
    
    sqlConnection1.Open();
    cmd.ExecuteNonQuery();
    sqlConnection1.Close();
    
    

Seguridad

Debe tener acceso a la base de datos con la que intenta conectarse, así como permiso para actualizar registros en la tabla deseada.

Vea también

Mostrar: