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 operaciones diferentes que dependen de los parámetros pasados.Es importante entender los resultados que se obtienen al llamar a estas firmas de método diferentes.

[!NOTA]

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.)

NotaNota
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 usa conjuntos de datos para almacenar los datos, puede actualizar simplemente los recursos en el objeto DataTable que desee y llamar después al método TableAdapter.Update y pasar los objetos DataSet, DataTable, DataRow o una matriz de DataRow.En la tabla anterior se describen 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.
    Dim regionRow As NorthwindDataSet.RegionRow
    regionRow = NorthwindDataSet._Region.FindByRegionID(1)
    
    ' Assign the new value to the desired column.
    regionRow.RegionDescription = "East"
    
    ' Save the updated row to the database
    Me.RegionTableAdapter.Update(Me.NorthwindDataSet._Region)
    
    // 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);
    

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.

    [!NOTA]

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

    Dim regionTableAdapter As New NorthwindDataSetTableAdapters.RegionTableAdapter
    
    regionTableAdapter.Update(1, "East", 1, "Eastern")
    
    NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
        new NorthwindDataSetTableAdapters.RegionTableAdapter();
    
    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.

    Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING")
    
    Dim cmd As New System.Data.SqlClient.SqlCommand
    cmd.CommandType = System.Data.CommandType.Text
    cmd.CommandText = "UPDATE Region SET [RegionDescription] = @RegionDescription WHERE [RegionID] = @RegionID"
    cmd.Parameters.AddWithValue("@RegionDescription", "East")
    cmd.Parameters.AddWithValue("@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.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "UPDATE Region SET [RegionDescription] = @RegionDescription WHERE [RegionID] = @RegionID";
    cmd.Parameters.AddWithValue("@RegionDescription", "East");
    cmd.Parameters.AddWithValue("@RegionID", "1");
    cmd.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

Tareas

Cómo: Eliminar registros de una base de datos

Cómo: Insertar nuevos registros en una base de datos

Cómo: Guardar los datos de un objeto en una base de datos

Conceptos

Información general sobre TableAdapter

Preparar la aplicación para recibir datos

Buscar datos en la aplicación

Enlazar controles a los datos en Visual Studio

Modificar datos en la aplicación

Validar datos

Guardar datos

Otros recursos

Información general de las aplicaciones de datos en Visual Studio

Conectarse a datos en Visual Studio