Sie sind auf Seite 1von 15

Vamos a 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.

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
Vamos a trabajar con tres capas…

 capaPresentación
 capaNegocio
 capaDato

Pasos para agregar una capa

Paso 1

Paso 2
Vamos hacer las referencias estas son para saber con quién se debe de comunicar cada capa

La CapaNegocio hace referencia a CapaDato

La CapaPresentacion hace referencia a CapaNegocio

El proyecto Sisventas hace referencia a CapaPresentacion

Paso 1

Le damos un click derecho a la capa con la que vamos a trabar

Segundo le ponemos el cotejo con la cual trabajaremos asi


Ya estando dentro del proyecto hacemos lo siguiente

Pasos para agregar una clase

Seleccionamos en la capa en la cual deseamos trabajar en este caso será CapaDatos le damos
un click derecho y seleccionamos esto como se ve

A donde dice Class.ss le ponemos los nombres en este caso le vomos a poner conexión dentro
de esta vamos a hacer la conexión con nuestro servidor que en mi caso es esta
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CapaDatos
{
class Conexion
{
"Data Source =
public static string Cn =
FEDOMU\MSSQLSERVER1; Initial Catalog=dbventas;
Integrated Security=true";
}
}
;

La grabamos y salimos de esta


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
o Clase Conexión
o Clase DCategoría
 Capa Negocio
o Clase NCategoría
 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;
}

}
Código clase NCategoria

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using CapaDatos;
using System.Data;

namespace CapaNegocio
{
public class NCategoria
{
//Método Insertar que llama al método Insertar de la clase DCategoría
//de la CapaDatos
public static string Insertar(string nombre, string descripcion)
{
DCategoria Obj = new DCategoria();
Obj.Nombre = nombre;
Obj.Descripcion = descripcion;
return Obj.Insertar(Obj);
}

//Método Editar que llama al método Editar de la clase DCategoría


//de la CapaDatos
public static string Editar(int idcategoria,string nombre, string
descripcion)
{
DCategoria Obj = new DCategoria();
Obj.Idcategoria = idcategoria;
Obj.Nombre = nombre;
Obj.Descripcion = descripcion;
return Obj.Editar(Obj);
}

//Método Eliminar que llama al método Eliminar de la clase DCategoría


//de la CapaDatos
public static string Eliminar(int idcategoria)
{
DCategoria Obj = new DCategoria();
Obj.Idcategoria = idcategoria;
return Obj.Eliminar(Obj);
}
//Método Mostrar que llama al método Mostrar de la clase DCategoría
//de la CapaDatos
public static DataTable Mostrar()
{
return new DCategoria().Mostrar();
}
//Método BuscarNombre que llama al método BuscarNombre
//de la clase DCategoría de la CapaDatos
public static DataTable BuscarNombre(string textobuscar)
{
DCategoria Obj = new DCategoria();
Obj.TextoBuscar = textobuscar;
return Obj.BuscarNombre(Obj);
}

}
}
En la capa presentación para hacer un formulario para el usuario

Paso 1

Primera parte
Para ver todos los videos y el proyecto completo visita

https://www.youtube.com/watch?v=X52FI6honh0&list=PLZPrWDz1Molqn16IORKg8nFYTejgYC
HJp