Top Ad unit 728 × 90

Recientes

recent

Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (5-41) Programación 3 capas, Procedimientos almacenados

Buen día amigos, En este artículo implementaremos los procedimientos almacenados en sql server 2014 para poder dar mantenimiento a nuestra tabla categoría, iniciaremos también con la implementación de la 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.

Procedimientos Almacenados
Stored procedure es un programa (o procedimiento) el cual es almacenado físicamente en una base de datos. Su implementación varía de un manejador de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. 

Procedimientos almacenados tabla Categoría


--Procedimiento Mostrar
create proc spmostrar_categoria
as
select * from categoria
order by idcategoria desc
go

-- Procedimiento  Buscar Categoría Nombre
create proc spbuscar_categoria_nombre
@textobuscar varchar(50)
as
select * from categoria
where nombre like @textobuscar + '%'
go

-- Procedimiento  Insertar Categoría
create proc spinsertar_categoria
@idcategoria int output,
@nombre varchar(50),
@descripcion varchar(256)
as
insert into categoria (nombre,descripcion)
values (@nombre,@descripcion)
go

-- Procedimiento  Editar Categoría
create proc speditar_categoria
@idcategoria int output,
@nombre varchar(50),
@descripcion varchar(256)
as
update categoria set nombre=@nombre,
descripcion=@descripcion
where idcategoria=@idcategoria
go

-- Procedimiento  Eliminar Categoría
create proc speliminar_categoria
@idcategoria int
as
delete from categoria
where idcategoria=@idcategoria
go


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

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 wl 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 5: Sistema de Ventas C# - Visual Studio 2013 - Sql Server 2014 (5-34) Procedimientos Almacenados 


Saludos Imperio, Un abrazo a la distancia!!!.
Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (5-41) Programación 3 capas, Procedimientos almacenados Reviewed by IncanatoIt-ad on 13:37 Rating: 5

2 comentarios:

  1. BUENAS JUAN CARLOS,
    GRACIAS POR TUS EXPLICACIONES Y PROGRAMAS
    QUIERO HACERLE UNA PREGUNTA CON RELACION AL SISTEMA DE VENTAS, Y ES QUE ME SALE EL SIGUIENTE ERROR CUANDO EJECUTO....QUE PODRIA SER....
    AQUI ESTA EL ERROR...
    Error 1 Type or namespace definition, or end-of-file expected
    C:\sisventas\CapaDatos\DCategoria.cs 290 5 CapaDatos

    Error 2 Metadata file 'C:\sisventas\CapaDatos\bin\Debug\CapaDatos.dll' could not be found
    C:\sisventas\CapaNegocios\CSC CapaNegocios

    Error 3 Metadata file 'C:\sisventas\CapaNegocios\bin\Debug\CapaNegocios.dll' could not be found C:\sisventas\CapaPresentacion\CSC CapaPresentacion

    Error 4 Metadata file 'C:\sisventas\CapaPresentacion\bin\Debug\CapaPresentacion.dll' could not be found C:\sisventas\sisventas\CSC sisventas




    ResponderEliminar
  2. muy buen tutoriar, pero estoy teniendo un poco de problema con los procedimiento almacenado ya que mi id es mysql workbench y los código son super diferente,

    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>