Top Ad unit 728 × 90

Recientes

recent

Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (6-41) Programación 3 capas Capa Datos Clase DCategoria

Buen día amigos, En este artículo seguiremos trabajando utilizando programación en 3 capas y el paradigma de programación Orientada a Objetos, implementaremos clase DCategoria en la capa datos donde estarán las variables (atributos) y las propiedades ó métodos setter y getter (para encapsular los campos), además de los métodos para insertar, editar, eliminar, mostrar y buscar registros en la tabla categoría de la base de datos en SQL Server 2014 directamente desde Visual Studio 2013 utilizando como lenguaje de programación Csharp.

Pueden descargar el paquete del proyecto desarrollado en el curso, la base de datos, los procedimientos almacenados y el sistema completo hasta el Video 41 desde:

Puedes descargar la versión completa del proyecto con todas las funcionalidades terminadas desde:

Pueden seguir el curso completo y aprender a desarrollar un Sistema de Ventas en Csharp.Net utilizando como IDE de desarrollo Visual Studio 2013 y como gestor de Base de datos SQL Server 2014 desde:

No se olviden siempre de Visitar mi canal www.youtube.com/jcarlosad7 para ver los nuevos cursos.

Capa Datos
Es donde residen los datos y es la encargada de acceder a los mismos. Está formada por uno o más gestores de bases de datos que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de Negocio.

  • Capa Datos
    • Clase Conexión
    • Clase DCategoría
  • Capa Negocio
  • Capa Presentación


Tabla Categoría


Código clase DCategoria

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//Importaciones necesarias
using System.Data;
using System.Data.SqlClient;

namespace CapaDatos
{
    public class dCategoria
    {
        private int VarIdcategoria;
        private string VarNombre;
        private string VarDescripcion;
        public string TextoBuscar;

    //Constructor vacío
    public dCategoria()
    {

    }

    //Constructor con parámetros
    public dCategoria(int Idcategoria,string Nombre,string Descripcion)
    {
      this.VarIdcategoria = Idcategoria;
      this.VarNombre = Nombre;
      this.VarDescripcion = Descripcion;
    }
    //Métodos setter and Getter
    #region Metodos Get y Set
    public int Idcategoria
    {
        get { return VarIdcategoria; }
        set { VarIdcategoria = value; }
    }
    public string Nombre
    {
        get { return VarNombre; }
        set { VarNombre = value; }
    }
    public string Descripcion
    {
        get { return VarDescripcion; }
        set { VarDescripcion = value; }
    }
    #endregion


    //Método utilizado para insertar una Categoría
    public string Insertar(dCategoria Categoria)
    {
        string Rpta = "";
        SqlConnection SqlCon = new SqlConnection();
        try
        {
            //1. Establecer la cadena de conexión
            SqlCon.ConnectionString = Conexion.Cn;
            //2. Abrir la conexión de la BD
            SqlCon.Open();
            //3. Establecer el comando
            SqlCommand SqlCmd = new SqlCommand();
            SqlCmd.Connection = SqlCon;
            SqlCmd.CommandText = "spinsertar_categoria";
            SqlCmd.CommandType = CommandType.StoredProcedure;

            //4. Agregar los parámetros al comando
            //Establecemos los valores para el parámetro
            //@idcategoria del Procedimiento Almacenado
            SqlParameter ParIdcategoria = new SqlParameter();
            ParIdcategoria.ParameterName = "@idcategoria";
            ParIdcategoria.SqlDbType = SqlDbType.Int;
            //Le declaramos que el parámetro es de salida,
            //porque obtendremos el código generado por la base de datos
            ParIdcategoria.Direction = ParameterDirection.Output;
            SqlCmd.Parameters.Add(ParIdcategoria);
            //Agregamos el parámetro al comando


            //Establecemos los valores para el parámetro
            //@nombre del Procedimiento Almacenado
            SqlParameter ParNombre = new SqlParameter();
            ParNombre.ParameterName = "@nombre";
            ParNombre.SqlDbType = SqlDbType.VarChar;
            ParNombre.Size = 100;
            ParNombre.Value = Categoria.Nombre;
            SqlCmd.Parameters.Add(ParNombre);
            //Agregamos el parámetro al comando

            //Establecemos los valores para el parámetro
            //@descripción del Procedimiento Almacenado
            SqlParameter ParDescripcion = new SqlParameter();
            ParDescripcion.ParameterName = "@descripcion";
            ParDescripcion.SqlDbType = SqlDbType.VarChar;
            ParDescripcion.Size = 256;
            ParDescripcion.Value = Categoria.Descripcion;
            SqlCmd.Parameters.Add(ParDescripcion); 
            //Agregamos el parámetro al comando

            //5. Ejecutamos el commando
            Rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "No se ingreso el registro de forma correcta";

        }
        catch (Exception ex)
        {
            Rpta = ex.Message;
           
        }
        finally
        {
            //6. Cerramos la conexion con la BD
            if (SqlCon.State == ConnectionState.Open) SqlCon.Close();
        }
        return Rpta;
    }


    //Método utilizado para actualizar un Producto
    public string Editar(dCategoria Categoria)
    {
        string Rpta = "";
        SqlConnection SqlCon = new SqlConnection();
        try
        {
            //1. Establecer la cadena de conexión
            SqlCon.ConnectionString = Conexion.Cn;
            //2. Abrir la conexión de la BD
            SqlCon.Open();
            //3. Establecer el comando
            SqlCommand SqlCmd = new SqlCommand();
            SqlCmd.Connection = SqlCon;
            SqlCmd.CommandText = "spEditar_Categoria";
            SqlCmd.CommandType = CommandType.StoredProcedure;

            //4. Agregar los parámetros al comando
            //Establecemos los valores para el parámetro
            //@idcategoria del Procedimiento Almacenado
            SqlParameter ParIdcategoria = new SqlParameter();
            ParIdcategoria.ParameterName = "@idcategoria";
            ParIdcategoria.SqlDbType = SqlDbType.Int;
            ParIdcategoria.Value = Categoria.Idcategoria;
            SqlCmd.Parameters.Add(ParIdcategoria);
            //Agregamos el parámetro al comando
           
            //Establecemos los valores para el parámetro
            //@nombre del Procedimiento Almacenado
            SqlParameter ParNombre = new SqlParameter();
            ParNombre.ParameterName = "@nombre";
            ParNombre.SqlDbType = SqlDbType.VarChar;
            ParNombre.Size = 100;
            ParNombre.Value = Categoria.Nombre;
            SqlCmd.Parameters.Add(ParNombre);
            //Agregamos el parámetro al comando
           
            //Establecemos los valores para el parámetro
            //@descripcion del Procedimiento Almacenado
            SqlParameter ParDescripcion = new SqlParameter();
            ParDescripcion.ParameterName = "@descripcion";
            ParDescripcion.SqlDbType = SqlDbType.VarChar;
            ParDescripcion.Size = 256;
            ParDescripcion.Value = Categoria.Descripcion;
            SqlCmd.Parameters.Add(ParDescripcion);
            //Agregamos el parámetro al comando

            //5. Ejecutamos el commando
            Rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "No se actualizo el registro de forma correcta";

        }
        catch (Exception ex)
        {
            Rpta = ex.Message;

        }
        finally
        {
            //6. Cerramos la conexión con la BD
            if (SqlCon.State == ConnectionState.Open) SqlCon.Close();
        }
        return Rpta;
    }
    //Método utilizado para eliminar un Producto
    public string Eliminar(dCategoria Categoria)
    {
        string Rpta = "";
        SqlConnection SqlCon = new SqlConnection();
        try
        {
            //1. Establecer la cadena de conexión
            SqlCon.ConnectionString = Conexion.Cn;
            //2. Abrir la conexión de la BD
            SqlCon.Open();
            //3. Establecer el comando
            SqlCommand SqlCmd = new SqlCommand();
            SqlCmd.Connection = SqlCon;
            SqlCmd.CommandText = "speliminar_categoria";
            SqlCmd.CommandType = CommandType.StoredProcedure;

            //4. Agregar los parámetros al comando
            //Establecemos los valores para el parámetro
            //@idcategoria del Procedimiento Almacenado
            SqlParameter ParIdcategoria = new SqlParameter();
            ParIdcategoria.ParameterName = "@idcategoria";
            ParIdcategoria.SqlDbType = SqlDbType.Int;
            ParIdcategoria.Value = Categoria.Idcategoria;
            SqlCmd.Parameters.Add(ParIdcategoria);
            //Agregamos el parámetro al comando
     //5. Ejecutamos el commando
            Rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "No se pudo eliminar el registro";

        }
        catch (Exception ex)
        {
            Rpta = ex.Message;
        }
        finally
        {
            //6. Cerramos la conexión con la BD
            if (SqlCon.State == ConnectionState.Open) SqlCon.Close();
        }
        return Rpta;
    }




    //Método utilizado para obtener todas las categorías de la base de datos
    public DataTable Mostrar()
    {
        DataTable DtResultado = new DataTable("categoria");
        SqlConnection SqlCon = new SqlConnection();
        try
        {
            //1. Establecer la cadena de conexion
            SqlCon.ConnectionString = Conexion.Cn;

            //2. Establecer el comando
            SqlCommand SqlCmd = new SqlCommand();
            SqlCmd.Connection = SqlCon;//La conexión que va a usar el comando
            SqlCmd.CommandText = "spmostrar_categoria";//El comando a ejecutar
            SqlCmd.CommandType = CommandType.StoredProcedure;
            //Decirle al comando que va a ejecutar una sentencia SQL

            //3. No hay parámetros

            //4. El DataAdapter que va a ejecutar el comando y
            //es el encargado de llena el DataTable
            SqlDataAdapter SqlDat = new SqlDataAdapter(SqlCmd);
            SqlDat.Fill(DtResultado);//Llenamos el DataTable
        }
        catch (Exception ex)
        {
            DtResultado = null;
           
        }
        return DtResultado;
    }

    public DataTable BuscarNombre(dCategoria Categoria)
    {
        DataTable DtResultado = new DataTable("categoria");
        SqlConnection SqlCon = new SqlConnection();
        try
        {
            //1. Establecer la cadena de conexion
            SqlCon.ConnectionString = Conexion.Cn;

            //2. Establecer el comando
            SqlCommand SqlCmd = new SqlCommand();
            SqlCmd.Connection = SqlCon;//La conexión que va a usar el comando
            SqlCmd.CommandText = "spBuscar_Categoria_Nombre";//El comando a ejecutar
            SqlCmd.CommandType = CommandType.StoredProcedure;
            //Decirle al comando que va a ejecutar una sentencia SQL

            //3.Enviamos el parámetro de Búsqueda
            SqlParameter ParTextoBuscar = new SqlParameter();
            ParTextoBuscar.ParameterName = "@textobuscar";
            ParTextoBuscar.SqlDbType = SqlDbType.VarChar;
            ParTextoBuscar.Size = 50;
            ParTextoBuscar.Value = Categoria.TextoBuscar;
            SqlCmd.Parameters.Add(ParTextoBuscar);

            //4. El DataAdapter que va a ejecutar el comando y
            //es el encargado de llena el DataTable
            SqlDataAdapter SqlDat = new SqlDataAdapter(SqlCmd);
            SqlDat.Fill(DtResultado);//Llenamos el DataTable
        }
        catch (Exception ex)
        {
            DtResultado = null;

        }
        return DtResultado;
    }
 

    }
}


Video 6: Sistema de Ventas C# - Visual Studio 2013 - Sql Server 2014 (6-34) Capa Datos Clase DCategoría 

Saludos Imperio, un abrazo a la distancia!!!
Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (6-41) Programación 3 capas Capa Datos Clase DCategoria Reviewed by IncanatoIt-ad on 14:03 Rating: 5

8 comentarios:

  1. Tu videos son excelentes felicitaciones, tengo dos preguntas 1. - porque en todos tus desarrollos trabajas con capas de clases ? es más rápido o simplemente es un mayor orden, yo hacia todo dentro de los formularios y además creaba métodos públicos hasta que vi tus video.

    2. - tu tampoco usas open source para conectar la base de datos. es una mal practica ? porque tú utilizas procedure de sql and class para conectar los datos.

    Te agradecería tu respuesta

    ResponderEliminar
    Respuestas
    1. Gracias por tus comentarios amigo..también tengo dos respuestas (Coincidencia!) 1. Programar en capas mantiene una buena arquitectura y por tanto se tiene un orden ya que se separa la lógica del negocio, las interfaces y los datos, además es más seguro..así si se tiene que hacer algún cambio se aplica a la capa específica..y el código es más fácil de reutilizar, por ejemplo si tienes una clase con sus métodos, propiedades y atributos lo puedes llamar desde cualquier otra clase y utilizar dichos métodos, si no se hace esto seguro tienes una aplicación con código repetido por allá y por acá
      2. Yo envio parámetros desde mi aplicaci;on en C# y ejecuto ciertos procedimientos almacenados en el gestor de base de datos, es más seguro.

      Gracias, espero sigas todos los cursos.

      Eliminar
    2. Hola Juan Carlos mi nombre es Yinet,me gustaria saber por favor que tengo qe hacer para solucionar el problema del video 8 en private void OcultarColumnas()
      {
      this.dataListado.Columns[0].Visible = false;
      this.dataListado.Columns[1].Visible = false;
      }
      mi correo es yini.yinesilla@gmail.com gracias de antemano por los cursos

      Eliminar
  2. Hola Juan Carlos! antetodo felicitarle por este gran tutorial. Estoy realizando el tutorial tanto por video como por aqui y me arroja este error con la variable DtResultado en el metodo BuscarNombre.
    "Error 2 No se puede convertir implícitamente el tipo 'System.Data.DataTable' en 'string'"

    ResponderEliminar
  3. Hola, tienes que llamar al método ocultar columnas pero cuando se tiene al menos una fila, esto revisalo en el método mostrar.

    ResponderEliminar
  4. hola sera que puedo seguir el curso usando VS 2012 y Sql 2012.

    Saludes

    ResponderEliminar
  5. Hola muy buenos tus videos, estoy haciéndolo a la par con el video pero me esta pasando que cuando edito me inserta tambien y no se que hice mal porque ya revise detenidamente y todo esta tal cual!

    ResponderEliminar

Todos los derechos reservados www.IncanatoIT.com - Desarrollando Software © 2014 - 2019
Desarrollado por Blogger, Designed by Sweetheme
IncanatoIt.com. Con la tecnología de Blogger.
y>