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