48 - SqlCommand (delete): Borrar registro


Otra de las actividades comunes con los datos es la eliminación de filas de una tabla. Para eliminar registros de una tabla debemos emplear el comando SQL delete.

Problema

Implementar una aplicación que permita consultar un artículo por su código. Luego de mostrarlo activar un botón para poder eliminarlo.

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

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

El código fuente para resolver la consulta y borrado 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
            Label4.Text = registro("descripcion")
            Label5.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 cadena As String = "delete from articulos where codigo=" & cod
        Dim comando As SqlCommand
        comando = New SqlCommand(cadena, conexion)
        Dim cant As Integer
        cant = comando.ExecuteNonQuery()
        If cant = 1 Then
            Label4.Text = ""
            Label5.Text = ""
            MessageBox.Show("Se borró el artículo")
        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 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 y lo creamos:

    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 (solo modificamos la propiedad Enabled del button2):

        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
            Label4.Text = registro("descripcion")
            Label5.Text = registro("precio")
            Button2.Enabled = True
        Else
            MessageBox.Show("No existe un artículo con el código ingresado")
        End If
        conexion.Close()

Lo nuevo aparece en el borrado del artículo que acabamos de consultar, primer confeccionamos un String con el comando delete:

        Dim cod As String = TextBox1.Text
        Dim cadena As String = "delete from articulos where codigo=" & cod

Luego procedemos a crear un objeto de la clase SqlCommand pasando el comando SQL de borrado con la referencia de la conexión:

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

Llamamos seguidamente al método ExecuteNonQuery que se comunica con el SQL Server para que ejecute el comando configurado previamente y retorna la cantidad de registros afectados (en este caso retorna la cantidad de registros borrados):

        Dim cant As Integer
        cant = comando.ExecuteNonQuery()

Si retorna un uno significa que se borró el artículo con el código ingresado:

        If cant = 1 Then
            Label4.Text = ""
            Label5.Text = ""
            MessageBox.Show("Se borró el artículo")

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

comando delete SqlCommand SQL Server

Retornar