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:
BUENAS JUAN CARLOS,
ResponderEliminarGRACIAS 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
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