49 - SqlCommand (update): Modificar registro


Vimos hasta ahora el alta (carga), consulta (búsqueda) y baja (borrado). Ahora veremos como modificar datos de una fila de la tabla.

Para modificar datos debemos utilizar el comando SQL update.

Problema

Implementar una aplicación que permita consultar un artículo por su código. Luego mostrar en dos TextBox la descripción y el precio actual. Permitir modificar la descripción y precio dejando registrado dicho cambio en la tabla de la base de datos al presionar un botón.

Crear un proyecto llamado: BaseDeDatos6 y definir la siguiente interfaz visual:

3 objeto de la clase Label.
2 objeto de la clase Button (disponer la propiedad Enabled del 
                             botón de modificación en false para que empiece desactivo)
3 objeto de la clase TextBox. 
comando update SqlCommand SQL Server

El código fuente para resolver la consulta y modificación es:

Imports System.Data.SqlClient

Public Class Form1

    Private conexion As New SqlConnection("server=DIEGO-PC ; database=base1 ; integrated security = true")

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        conexion.Open()
        Dim cod As String = TextBox1.Text
        Dim cadena As String = "select descripcion, precio from articulos where codigo=" & cod
        Dim comando As SqlCommand
        comando = New SqlCommand(cadena, conexion)
        Dim registro As SqlDataReader
        registro = comando.ExecuteReader()
        If registro.Read() Then
            TextBox2.Text = registro("descripcion")
            TextBox3.Text = registro("precio")
            Button2.Enabled = True
        Else
            MessageBox.Show("No existe un artículo con el código ingresado")
        End If
        conexion.Close()
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        conexion.Open()
        Dim cod As String = TextBox1.Text
        Dim descri As String = TextBox2.Text
        Dim precio As String = TextBox3.Text
        Dim cadena As String = "update articulos set descripcion='" & descri & "', precio=" & precio & " where codigo=" & cod
        Dim comando As SqlCommand
        comando = New SqlCommand(cadena, conexion)
        Dim cant As Integer
        cant = comando.ExecuteNonQuery()
        If cant = 1 Then
            MessageBox.Show("Se modificaron los datos del artículo")
            TextBox1.Text = ""
            TextBox2.Text = ""
            TextBox3.Text = ""
        Else
            MessageBox.Show("No existe un artículo con el código ingresado")
        End If
        conexion.Close()
        Button2.Enabled = False
    End Sub
End Class

Primero indicamos el uso del espacio de nombres relacionado a la comunicación con SQL Server:

Imports System.Data.SqlClient

Como en los dos métodos utilizamos el objeto SqlConnection lo definimos como un atributo de la clase Form1:

Public Class Form1

    Private conexion As New SqlConnection("server=DIEGO-PC ; database=base1 ; integrated security = true")

El algoritmo de consulta es idéntico al concepto que vimos anteriormente (salvo que los datos rescatados los mostramos en TextBox):

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        conexion.Open()
        Dim cod As String = TextBox1.Text
        Dim cadena As String = "select descripcion, precio from articulos where codigo=" & cod
        Dim comando As SqlCommand
        comando = New SqlCommand(cadena, conexion)
        Dim registro As SqlDataReader
        registro = comando.ExecuteReader()
        If registro.Read() Then
            TextBox2.Text = registro("descripcion")
            TextBox3.Text = registro("precio")
            Button2.Enabled = True
        Else
            MessageBox.Show("No existe un artículo con el código ingresado")
        End If
        conexion.Close()
    End Sub

En el evento Click de la modificación procedemos a configurar un String con el comando SQL update rescatando los datos de los tres TextBox:

        Dim cod As String = TextBox1.Text
        Dim descri As String = TextBox2.Text
        Dim precio As String = TextBox3.Text
        Dim cadena As String = "update articulos set descripcion='" & descri & "', precio=" & precio & " where codigo=" & cod

Seguidamente creamos un objeto de la clase SqlCommand pasando al constructor el String con el comando update y la referencia a la conexión:

        Dim comando As SqlCommand
        comando = New SqlCommand(cadena, conexion)

Llamamos al método ExecuteNonQuery para que se ejecute el comando update por parte del SQL Server y nos retorne la cantidad de registros afectados:

        Dim cant As Integer
        cant = comando.ExecuteNonQuery()

Si retorna un uno significa que se efectuó la modificación:

        If registro.Read() Then
            TextBox2.Text = registro("descripcion")
            TextBox3.Text = registro("precio")
            Button2.Enabled = True

En pantalla tenemos la siguiente interfaz luego de modificar un artículo:

comando delete SqlCommand SQL Server

Retornar