Hemos visto que podemos formar un comando SQL para enviarlo a SQL Server generando un String concatenando los datos que ingresa el operador por teclado:
Dim descri As String = TextBox1.Text
Dim precio As String = TextBox2.Text
Dim cadena As String = "insert into articulos(descripcion,precio) values ('" & descri & "'," & precio & ")"
Esta metodología tiene el inconveniente cuando hay que elaborar comandos SQL con muchos campos (imaginemos que tenemos que elaborar un insert con una tabla que tiene más de 10 campos)
Para solventar esta dificultad se introduce el concepto de parámetros dentro del comando SQL.
Implementar una interfaz visual para el alta de registros en la tabla artículos utilizando parámetros en el comando insert.
Crearemos un proyecto llamado "BaseDeDatos7" con la siguiente interfaz visual:

El código fuente de la aplicación para efectuar altas es:
Imports System.Data.SqlClient
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conexion As SqlConnection
conexion = New SqlConnection("server=DIEGO-PC ; database=base1 ; integrated security = true")
conexion.Open()
Dim cadena As String = "insert into articulos(descripcion,precio) values (@descripcion,@precio)"
Dim comando As SqlCommand
comando = New SqlCommand(cadena, conexion)
comando.Parameters.Add("@descripcion", SqlDbType.VarChar)
comando.Parameters.Add("@precio", SqlDbType.Float)
comando.Parameters("@descripcion").Value = TextBox1.Text
comando.Parameters("@precio").Value = TextBox2.Text
comando.ExecuteNonQuery()
MessageBox.Show("Los datos se guardaron correctamente")
TextBox1.Text = ""
TextBox2.Text = ""
conexion.Close()
End Sub
End Class
Para trabajar con parámetros dentro de comandos SQL debemos disponer el caracter @ y un nombre en los lugares donde se sustituye en tiempo de ejecución con el dato que carga el operador.
En nuestro ejemplo debemos parametrizar la descripción y el precio del artículo:
Dim cadena As String = "insert into articulos(descripcion,precio) values (@descripcion,@precio)"
Es importante notar que no disponemos las camillas simple cuando un parámetro es de tipo varchar. Solo indicamos nombres de parámetros y no tipo de parámetros.
Luego si debemos llamar al método Add de la propiedad Parameters del objeto de la clase SqlCommand indicando cada parámetro y de que tipo se trata (con esto la clase SqlCommand conocerá si tiene que disponer las comillas simples o no):
comando.Parameters.Add("@descripcion", SqlDbType.VarChar)
comando.Parameters.Add("@precio", SqlDbType.Float)
Luego que creamos los dos parámetros debemos inicializar sus valores mediante la propiedad Parameters y accediendo como subíndice al nombre de parámetro respectivo:
comando.Parameters("@descripcion").Value = TextBox1.Text
comando.Parameters("@precio").Value = TextBox2.Text
Finalmente llamamos al método ExecuteNonQuery para enviar al Sql Server el comando Sql respectivo (previamente el objeto comando de la clase SqlCommand se encarga de sustituir los parámetros por los valores asignados y según el tipo de dato del parámetros añadir las comillas simples)
Implementar la consulta de un artículo ingresando por teclado el código y recuperando la descripción y el precio. Definir un parámetro para la consulta
Crear un proyecto llamado: BaseDeDatos8 y definir la siguiente interfaz visual:
5 objeto de la clase Label. 1 objeto de la clase Button. 1 objeto de la clase TextBox.

En el evento Click procedemos a buscar el código del artículo ingresado en el TextBox. El código fuente es:
Imports System.Data.SqlClient
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conexion As SqlConnection
conexion = New SqlConnection("server=DIEGO-PC ; database=base1 ; integrated security = true")
conexion.Open()
Dim cadena As String = "select descripcion, precio from articulos where codigo=@codigo"
Dim comando As SqlCommand
comando = New SqlCommand(cadena, conexion)
comando.Parameters.Add("@codigo", SqlDbType.Int)
comando.Parameters("@codigo").Value = TextBox1.Text
Dim registro As SqlDataReader
registro = comando.ExecuteReader()
Label4.Text = ""
Label5.Text = ""
If registro.Read() = True Then
Label4.Text = registro("descripcion")
Label5.Text = registro("precio")
Else
MessageBox.Show("No existe un artículo con el código ingresado")
End If
conexion.Close()
End Sub
End Class
Definimos el String con el comando select insertando un parámetro llamado @codigo:
Dim cadena As String = "select descripcion, precio from articulos where codigo=@codigo"
Creamos e inicializamos el parámetro @codigo:
comando.Parameters.Add("@codigo", SqlDbType.Int)
comando.Parameters("@codigo").Value = TextBox1.Text
El resto de la aplicación no cambia con respecto a lo que vimos en conceptos anteriores.
Implementar una aplicación que permita consultar un artículo por su código. Luego de mostrarlo activar un botón para poder eliminarlo. Definir parámetros tanto para la consulta como para el borrado.
Crear un proyecto llamado: PruebaBaseDatos9 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.

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 cadena As String = "select descripcion, precio from articulos where codigo=@codigo"
Dim comando As SqlCommand
comando = New SqlCommand(cadena, conexion)
comando.Parameters.Add("@codigo", SqlDbType.Int)
comando.Parameters("@codigo").Value = TextBox1.Text
Dim registro As SqlDataReader
registro = comando.ExecuteReader()
If registro.Read() = True 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 cadena As String = "delete from articulos where codigo=@codigo"
Dim comando As SqlCommand
comando = New SqlCommand(cadena, conexion)
comando.Parameters.Add("@codigo", SqlDbType.Int)
comando.Parameters("@codigo").Value = TextBox1.Text
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
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. Utilizar parámetros en los comandos SQL en la consulta y borrado
Crear un proyecto llamado: BaseDeDatos10 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 cadena As String = "select descripcion, precio from articulos where codigo=@codigo"
Dim comando As SqlCommand
comando = New SqlCommand(cadena, conexion)
comando.Parameters.Add("@codigo", SqlDbType.Int)
comando.Parameters("@codigo").Value = TextBox1.Text
Dim registro As SqlDataReader
registro = comando.ExecuteReader()
If registro.Read() = True 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 cadena As String = "update articulos set descripcion=@descripcion, precio=@precio where codigo=@codigo"
Dim comando As SqlCommand
comando = New SqlCommand(cadena, conexion)
comando.Parameters.Add("@codigo", SqlDbType.Int)
comando.Parameters("@codigo").Value = TextBox1.Text
comando.Parameters.Add("@descripcion", SqlDbType.VarChar)
comando.Parameters("@descripcion").Value = TextBox2.Text
comando.Parameters.Add("@precio", SqlDbType.Float)
comando.Parameters("@precio").Value = TextBox3.Text
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