viernes, 26 de mayo de 2017

002 ADO.NET Y WINDOWS FORMS(Aplicación de escritorio)

PRACTICA 002: ADO.NET y LINQ con Windows Forms


Ing. Honoria Reyes Macedo 

IDE: Microsoft Visual Studio
Proveedor para conexión a Base de Datos:SqlClient
Lenguaje de programacion: C#
Base de Datos: SQLServer

INTRODUCCION:
    Es una aplicación de modo escritorio con Windows Form.
    En esta práctica se utiliza una base da datos "CursoADO" en SQL Server
                  




ACTIVIDADES
1.- Crear un nuevo proyecto  CursoLINQ
 
     1.1.- Seleccionar C#, seleccionar Windows Forms Application y poner el nombre del proyecto CursoLINQ 
 
1.2 Se creara automáticamente la forma siguiente 
 1.3.- Cambiar en la forma las propiedades  (Con mouse derecho)
Text = Alumno
Name = CaptAlumno

2.-- Agregar(Arrastrar) los siguientes controles a la pantalla:
Seleccionar del menú ToolBox como se indica en el siguiente punto
 
2.1.- Para las Label (etiquetas) seleccionar con mouse derecho las propiedades y poner en su respectivo  Text: 
Nombre
Apellido Paterno
Apellido Materno
Fecha de Alta
Activo
 
2.2.- Para los controles Text, CheckBox, DateTimePicker, Button (controles de captura) poner en sus propiedades en su respectivo name
textBNombre
textBApPat
textBApMat
dateTAlta
checkBStatus
btnGuardar
 

Y en el DateTimePicker poner su format= short
 
3.- Crear una nueva clase  Alumno.cs   desde el menú derecho Solution Explorer.
Con mouse derecho sobre CursoLINQ seleccionar
Add + Class…
 
3.1 Capturar el contenido del constructor y la definición de las propiedades con sus get y set   (Texto en rojo)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CursoLINQ
{
    class Alumno
    {
        public Alumno()
        {
            intCveAlumno = Int32.MinValue;
            strNombre = string.Empty;
            strApellidoPat = string.Empty;
            strApellidoMat = string.Empty;
            sintEstatus = Int16.MinValue;
            sdatFechaAlta = DateTime.MinValue;
        }
        public int intCveAlumno { get; set; }
        public DateTime sdatFechaAlta { get; set; }
        public short sintEstatus { get; set; }
        public string strApellidoMat { get; set; }
        public string strApellidoPat { get; set; }
        public string strNombre { get; set; }
    }
}
 
4.- Crear una nueva clase  AlumnoADO.cs  desde el menú derecho Solution Explorer.
Con mouse derecho seleccionar
Add + Class…
4.1 Capturar la declaración de variables de conexión y el método Insert()

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
namespace CursoLINQ
{
    class AlumnoADO
    {
        public static string connectionString ="Data Source=DESKTOP-CHPM3KJ\\SQLEXPRESS;Initial Catalog=CursoADO;user id = sa; password = admin;"
            + "Integrated Security=true";
        public static string queryString = "";
 
        public AlumnoADO() {

        }
       
public static string Insert(Alumno pmdlAlumno)
        {
            string strResult = "";
            try
            {
                using (SqlConnection connection =
                    new SqlConnection(connectionString))
                {
                    queryString = @"insert into alumno(nombre, appaterno, apmaterno, estatus, fechaalta)
                                    values(@Nombre, @ApPaterno, @ApMaterno, @Estatus, @FechaAlta) ";
                    SqlCommand command = new SqlCommand(queryString, connection);
                    command.Parameters.AddWithValue("@Nombre", pmdlAlumno.strNombre);
                    command.Parameters.AddWithValue("@ApPaterno", pmdlAlumno.strApellidoPat);
                    command.Parameters.AddWithValue("@ApMaterno", pmdlAlumno.strApellidoMat);
                    command.Parameters.AddWithValue("@Estatus", pmdlAlumno.sintEstatus);
command.Parameters.AddWithValue("@FechaAlta",                        pmdlAlumno.sdatFechaAlta.ToString("yyyyMMdd"));
                    connection.Open();
                    if (command.ExecuteNonQuery() > 0)
                    {
                        strResult = "OK";
                        Console.WriteLine("Registro Insertado correctamente");
                    }
                }
            }
            catch (Exception exp)
            {
                strResult = exp.Message;
                Console.WriteLine(exp.Message);
            }
            return strResult;
        }
    }
}

5.- Agregar un evento Click al botón Guardar: Dar doble click sobre el botón Guardar y agregar la instrucción en rojo
            
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            string strResult = AlumnoADO.Insert(new Alumno() { strNombre = textBNombre.Text, strApellidoPat = textBApPat.Text, strApellidoMat = textBApMat.Text, sintEstatus = Convert.ToInt16(checkBStatus.Checked ? 1 : 0), sdatFechaAlta = dateTAlta.Value });
       
}

5.1.- Compilar y Ejecutar el programa  con Ctrl +F5. Revisar si inserto en el SQLSERVER
6.- Agregar un DataGridViewcon el nombre dataGridAlumno desde el menú ToolBox y llenarlo con un DataSet
 
6.1.-  Agregar el método Consulta() a la clase AlumnoADO.cs

        public static DataSet Consulta()
        {
            queryString = @"SELECT cvealumno, nombre, appaterno, apmaterno, estatus, fechaalta 
                           from dbo.alumno
                           WHERE estatus = @pricePoint
                           ORDER BY cvealumno ASC;";
            int paramValue = 1;
            using (SqlConnection connection =  new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                command.Parameters.AddWithValue("@pricePoint", paramValue);
                    //SqlCommand cmd = new SqlCommand("Select * from tuTabla", cn);
                    SqlDataAdapter da = new SqlDataAdapter(command);
                    DataSet ds = new DataSet();
                try
                {   
                    da.Fill(ds);   // Opcion de llenado por DataSet           
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.ReadLine();                 
                }
                return ds;
            }
        }

6.2  Declarar una variable global de tipo  DataSet en la forma CaptAlumno
    public partial class CaptAlumno : Form
    {
        DataSet Auxiliar_ds = new DataSet();
...
...
}



6.3.- Compilar y ejecutar con Ctrl+F5.   Revisar los resultados en SQLServer
7.-  Agregar un nuevo boton  ¨Ejecutar LINQ¨, un DataGridView y un botón Refrescar 
7.1 En las propiedades de cada control, poner el valor respectivo en name
btnLinQ
dataGridViewLINQ
btnRefrescar
 
7.2  Agregar las instrucciones en rojo en el evento del botón btnRefrescar
        private void btnRefrescar_Click_1(object sender, EventArgs e)
        {
            Auxiliar_ds = AlumnoADO.Consulta();
            dataGridAlumno.DataSource = Auxiliar_ds.Tables[0];
        }
7.3  Agregar las siguientes instrucciones al evento click del botón btnLinQ
       private void btnLinQ_Click(object sender, EventArgs e)
        {
            DataTable alumno_dt = Auxiliar_ds.Tables[0];
            DataTable dtQuery =
               (from alumno_alias in alumno_dt.AsEnumerable()
                orderby alumno_alias.Field<string>("nombre") ascending
                where alumno_alias.Field<string>("nombre") == "ERICK"
                select alumno_alias).CopyToDataTable();
            dataGridViewLINQ.DataSource = dtQuery;
        }
      Observar que el botón <Refrescar> actualiza desde la Base de Datos a  “dataGridAlumno” Creando un nuevo DataSet
       Y el botón  < Ejecutar LINQ > actualiza desde  “dataGridAlumno” a “dataGridViewLINQ”  usando el DataSet  previamente actualizado
 


 oooooooooooooooooooooooooooooooOoOooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooOOOooooOOOooooooooooooooooooooooooooooooooooooo