SqlCommand (select): Listar registros
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.
Problema
Imprimir por pantalla todos los registros contenidos en la tabla artículos.
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.
Dentro del mismo proyecto crearemos un nuevo :
Un objeto de la clase Button.
Un objeto de la clase TextBox (propiedad Multiline: true y ScrollBar: Vertical,
estos lo encontramos en las propiedades del textbox)
En la imagen se creó un botón el cual llamaremos” Muestra Datos” y luego un
label que llamara “MUESTRA BASE DATOS 1 TABLA ARTICULOS ”
CODIGO FUENTE
//CABECERA
using System;
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
namespace WindowsFormsApp3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
//boton prueba conexion a la base de datos
{
SqlConnection conexion = new SqlConnection("server=DESKTOP-KN255FF\\sqlexpress
; database=base1 ; integrated security = true");
[Link]();
[Link]("Se abrió la conexión con el servidor SQL Server y se
seleccionó la base de datos");
[Link]();
[Link]("Se cerró la conexión.");
}
private void button2_Click(object sender, EventArgs e)
// boton insertar
{
SqlConnection conexion = new SqlConnection("server=DESKTOP-KN255FF\\sqlexpress
; database=base1 ; integrated security = true");
[Link]();
[Link]("Se abrió la conexión con el servidor SQL Server y se
seleccionó la base de datos");
string descri = [Link];//ingerso de datos descripcion
string precio = [Link];//ingreso de datos precio
string cadena = "insert into ARTICULOS1(descripcion,precio) values ('" +
descri + "'," + precio + ")";//consulta a realizar
SqlCommand comando = new SqlCommand(cadena, conexion);//entrega de datos
[Link]();//ejecucion de ingreso
[Link]("Los datos se guardaron correctamente");
[Link] = "";//para limpiar contenido de los textbox
[Link] = "";
[Link]();
[Link]("Se cerró la conexión.");
private void button3_Click(object sender, EventArgs e)
{
[Link]();//salir completamente de la aplicacion
}
private void label3_Click(object sender, EventArgs e)
{
}
//----------------------------------------------------------------------------------------
private void button4_Click(object sender, EventArgs e)
{
SqlConnection conexion = new SqlConnection("server=DESKTOP-KN255FF\\sqlexpress
; database=base1 ; integrated security = true");
[Link]();
[Link]("Se abrió la conexión con el servidor SQL Server y se
seleccionó la base de datos");
//
string cadena = "select codigo, descripcion, precio from ARTICULOS1";
SqlCommand comando = new SqlCommand(cadena, conexion);
SqlDataReader registros = [Link]();
while ([Link]())
{
[Link](registros["codigo"].ToString());
[Link](" - ");
[Link](registros["descripcion"].ToString());
[Link](" - ");
[Link](registros["precio"].ToString());
[Link]([Link]);
}
//
[Link]();
[Link]("Se cerró la conexión.");
}
//----------------------------------------------------------------------------------------
private void Form1_Load(object sender, EventArgs e)
{
// TODO: esta línea de código carga datos en la tabla
'base1DataSet.ARTICULOS1' Puede moverla o quitarla según sea necesario.
[Link](this.base1DataSet.ARTICULOS1);
private void dataGridView1_CellContentClick(object sender,
DataGridViewCellEventArgs e)
{
}
}
}
//OTRA FORMA DE PODER LOS DATOS ES AGREGANDO
Recordar que siempre debemos importar es espacio de nombres:
using [Link];
Donde se declaran las clases SqlConnection, SqlCommand etc.
Lo primero que hacemos es configurar la cadena de conexión y abrirla:
SqlConnection conexion = new SqlConnection("server= XXXXXX ;
database=base1 ; integrated security = true");
[Link]();
El comando SQL para recuperar todas la filas de la tabla articulos es:
string cadena = "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:
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:
SqlDataReader registros = [Link]();
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 while y llamar en cada vuelta del ciclo al
método Read:
SqlDataReader registros = [Link]();
while ([Link]()) {
[Link](registros["codigo"].ToString());
[Link](" - ");
[Link](registros["descripcion"].ToString());
[Link](" - ");
[Link](registros["precio"].ToString());
[Link]([Link]);
}
Imaginemos que el comando SQL select retorna 5 filas. Cada llamada a Read
avanza un puntero al siguiente registro y dentro del 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
while el método Read retorna false.
El resultado de ejecutar este programa con la tabla articulos conteniendo 5 filas:
Para que se muestren dentro del TextBox un registro en cada fila debemos
insertar el valor de la propiedad 'NewLine' contenido en la clase estática
'Enviroment':
[Link]([Link]);