martes, 3 de diciembre de 2013

Ejemplo de consulta a base de datos de SQL Server en C#

NOTA: el siguiente ejemplo se realizó en Visual Studio 2012 y SQL Server 2012.


Código de la base de datos

create database Prueba
go
use Prueba
go
create table Menores
(
ID_Menores int primary key identity(1,1),
Nombre_M varchar(30) not null,
Apellp_M varchar(20) not null,
Apellm_M varchar(20) not null,
Sexo_M char(1) not null,
Fecha_Reg_M date not null
)

insert into Menores(Nombre_M,Apellp_M,Apellm_M,Sexo_M,Fecha_Reg_M)values('pepito','pica','papas','M','02-12-13')
insert into Menores(Nombre_M,Apellp_M,Apellm_M,Sexo_M,Fecha_Reg_M)values('Miguel','Hidalgo',' y Costilla','M','02-12-13')
insert into Menores(Nombre_M,Apellp_M,Apellm_M,Sexo_M,Fecha_Reg_M)values('Benito','Juárez','García','M','02-12-13')
insert into Menores(Nombre_M,Apellp_M,Apellm_M,Sexo_M,Fecha_Reg_M)values('Josefa','Ortiz',' de Domínguez','F','02-12-13')
insert into Menores(Nombre_M,Apellp_M,Apellm_M,Sexo_M,Fecha_Reg_M)values('María','la del','Barrio','F','02-12-13')

Diseño de la aplicación



Código de la aplicación
Se puede reducir el código pero para la explicación se muestra de la siguiente manera:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;/*libreríapara manejo de SQL*/

namespace textenlabel
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        /*variables globales*/
        string cadenaconexion = @"Data Source=HUGUITO;Initial Catalog=Prueba;Integrated Security=True";
        /*método para la consulta individual, recibe como parámetro el id que ingresa el usuario
         en el TextBox txt_id, esto para traer un registro en específico*/
        public void consulta_individual(int id)
        {
           /*objeto de conexión*/
            SqlConnection con = new SqlConnection();
            /* asignamos la cadena de conexión*/
            con.ConnectionString = cadenaconexion;
            /*objeto para el comando*/
            SqlCommand cmd = new SqlCommand();
            /*asignamos el comando de texto (consulta, puede ser select, insert, update o delete), en este caso un select
              que trae los campos de un sólo registro de la tabla Menores, así ejemplificamos la consulta individual*/
            cmd.CommandText = "select Nombre_M,Apellp_M,Apellm_M from Menores where ID_Menores="+id+"";
            /*especificamos el tipo de comando, en este caso de texto, puede ser del tipo procedimiento almacenado*/
            cmd.CommandType = CommandType.Text;
            /*asignamos al comando el objeto de conexión*/
            cmd.Connection = con;
            /*declaramos un obeto datareader, para leer sobre la base de datos*/
            SqlDataReader rdr;
            /*abrimos la conexión con la base de datos*/
            con.Open();
            /*asignamos al datareader el comando y executamos la lectura*/
            rdr = cmd.ExecuteReader();
            /*con un if y else condicionamos la lectura*/
            if (rdr.Read())
            {
                /*si lee mostramos el resultado de la consulta en el label lb_consulta_individual*/
                lb_consulta_individual.Text = rdr.GetString(rdr.GetOrdinal("Nombre_M")) + " " + rdr.GetString(rdr.GetOrdinal("Apellp_M")) + " " + rdr.GetString(rdr.GetOrdinal("Apellm_M"));
            }
                /*sino lee mostramos un mensaje*/
            else lb_consulta_individual.Text = "No se encontró la persona";
            /*cerramos la conexión*/
            con.Close();
           
        }
        /*método para la consulta múltiple, para hacerlo fácil de comprender dejamos los mismos nombres los objetos de conexión */
        public void consulta_multiple()
        {
            /*objeto de conexión*/
            SqlConnection con = new SqlConnection();
            /* asignamos la cadena de conexión*/
            con.ConnectionString = cadenaconexion;
            /*objeto para el comando*/
            SqlCommand cmd = new SqlCommand();
            /*asignamos el comando de texto (consulta, puede ser select, insert, update o delete),
             en este caso un select que trae todos los campos de la tabla Menores*/
            cmd.CommandText = "select Nombre_M,Apellp_M,Apellm_M from Menores";
            /*especificamos el tipo de comando, en este caso de texto, puede ser del tipo procedimiento almacenado*/
            cmd.CommandType = CommandType.Text;
            /*asignamos al comando el objeto de conexión*/
            cmd.Connection = con;
            /*declaramos un obeto datareader, para leer sobre la base de datos*/
            SqlDataReader rdr;
            /*abrimos la conexión con la base de datos*/
            con.Open();
            /*asignamos al datareader el comando y executamos la lectura*/
            rdr = cmd.ExecuteReader();
            /*Limpiamos el ListBox*/
            lbox_consulta_multiple.Items.Clear();
            /*con el siguiente ciclo while mientras lea en la base de datos traemos el registro*/
           while(rdr.Read())
            {
               /*agregamos al ListBox cada registro que lee en la base de datos*/
                lbox_consulta_multiple.Items.Add(rdr.GetString(rdr.GetOrdinal("Nombre_M")) + " " + rdr.GetString(rdr.GetOrdinal("Apellp_M")) + " " + rdr.GetString(rdr.GetOrdinal("Apellm_M")));
            }
            /*cerramos la conexión*/
            con.Close();

        }
        /*evento Click del botón btn_consulta_individual*/
        private void btn_consulta_individual_Click(object sender, EventArgs e)
        {
            /*llamamos al método que realiza la consulta individual,
             * le pasamos como parámetro el id que ingresa el usuario en el TextBox txt_id*/
            consulta_individual(Convert.ToInt32(txt_id.Text));
        }
        /*evento Click del botón btn_consulta_multiple*/
        private void btn_consulta_multiple_Click(object sender, EventArgs e)
        {
             /*llamamos al método que realiza la consulta múltiple*/
            consulta_multiple();
        }
    }
}




Pruebas de la aplicación