Vimos el concepto anterior como enviar datos al servidor para que se efectúe un insert en una tabla.
Veremos ahora como recuperar los datos almacenados en una tabla para mostrarlos en pantalla.
Imprimir por pantalla todos los registros contenidos en la tabla articulos.
Para recuperar datos de una tabla tenemos que utilizar el comando SQL select indicando el nombre de la tabla de donde se recuperan los datos y los campos propiamente dichos.
Crear un proyecto llamado: BaseDeDatos3 y definir la siguiente interfaz visual:
Un objeto de la clase Button. Un objeto de la clase TextBox (propiedad Multiline: true y ScrollBar: Vertical
En el evento Click del botón procedemos a recuperar los datos de la tabla articulos y los mostramos dentro del TextBox.
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 codigo, descripcion, precio from articulos" Dim comando As SqlCommand comando = New SqlCommand(cadena, conexion) Dim registros As SqlDataReader registros = comando.ExecuteReader() Do While registros.Read() = True TextBox1.AppendText(registros("codigo")) TextBox1.AppendText(" - ") TextBox1.AppendText(registros("descripcion")) TextBox1.AppendText(" - ") TextBox1.AppendText(registros("precio")) TextBox1.AppendText(vbCrLf) Loop conexion.Close() End Sub End Class
Recordar que siempre debemos importar es espacio de nombres:
Imports System.Data.SqlClient
Donde se declaran las clases SqlConnection, SqlCommand etc.
Lo primero que hacemos es configurar la cadena de conexión y abrirla:
Dim conexion As SqlConnection conexion = New SqlConnection("server=DIEGO-PC ; database=base1 ; integrated security = true") conexion.Open()
El comando SQL para recuperar todas la filas de la tabla articulos es:
Dim cadena As String = "select codigo, descripcion, precio from articulos"
Seguidamente seguimos con la creación del objeto de la clase SqlCommand pasando el String con el comando SQL y la referencia a la conexión:
Dim comando As SqlCommand comando = New SqlCommand(cadena, conexion)
Lo nuevo aparece cuando queremos recuperar los datos que genera el SQL Server. Para esto llamamos al método ExecuteReader del objeto SqlCommand:
Dim registros As SqlDataReader registros = comando.ExecuteReader()
Este método retorna un objeto de la clase SqlDataReader que almacena el resultado del comando SQL select.
Para acceder a cada fila retornada por el comando SQL select debemos disponer una estructura repetitiva Do While y llamar en cada vuelta del ciclo al método Read:
Do While registros.Read() = True TextBox1.AppendText(registros("codigo")) TextBox1.AppendText(" - ") TextBox1.AppendText(registros("descripcion")) TextBox1.AppendText(" - ") TextBox1.AppendText(registros("precio")) TextBox1.AppendText(vbCrLf) Loop
Imaginemos que el comando SQL select retorna 5 filas. Cada llamada a Read avanza un puntero al siguiente registro y dentro del Do While lo recuperamos mediante el objeto registros y mediante un subíndice indicamos el nombre de campo de la tabla a recuperar.
Por ejemplo si la tabla articulos estuviera vacía la primera vez que se ejecuta el Do While el método Read retorna false.
El resultado de ejecutar este programa con la tabla articulos conteniendo 5 filas:
Para que se muestren un registro debajo del otro dentro del TextBox debemos insertar un salto de línea con la constante llamada vbCrLf:
TextBox1.AppendText(vbCrLf)