Data">
Nothing Special   »   [go: up one dir, main page]

CREANDO UN PROYECTO C# en 3 CAPAS

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 23

Programación en

capas enC#
----------------------------------------------------

Lic. David I. López Pérez


create database Practica
go
use Practica
go
create table Productos
(
Id int identity (1,1) primary key,
Nombre nvarchar (100),
Descripcion nvarchar (100),
Marca nvarchar (100),
Precio float, Script Base de datos.
Stock int
)

insert into Productos


values
('Gaseosa','3 litros','Coca Cola',70,48),
('Jamon',' 1/2 libra','Cainsa',70,20) Sql-Server
---PROCEDIMIENTOS ALMACENADOS
--------------------------MOSTRAR
create proc MostrarProductos
as
select *from Productos
go

Lic. David I. López Pérez 2


--------------------------INSERTAR
create proc InsetarProductos
@nombre nvarchar (100),
@descrip nvarchar (100),
@marca nvarchar (100),
@precio float,
@stock int
as
insert into Productos values (@nombre,@descrip,@marca,@precio,@stock)
go

------------------------ELIMINAR
create proc EliminarProducto
@idpro int
Script Base de datos.
as
delete from Productos where Id=@idpro
go
------------------EDITAR

create proc EditarProductos


@nombre nvarchar (100), Sql-Server
@descrip nvarchar (100),
@marca nvarchar (100),
@precio float,
@stock int,
@id int
as
update Productos set Nombre=@nombre, Descripcion=@descrip, Marca=@marca, Precio=@precio,
Stock=@stock where Id=@id

Lic. David I. López Pérez 3


Crear un proyecto con solución
en blanco.

Sistema en C#

Lic. David I. López Pérez 4


Clic derecho en la solución,
Agregar, Nuevo Proyecto.

Lic. David I. López Pérez 5


Clic visual C#,
Biblioteca de Clases-
Nombre CapaDatos. y
Nombre CapaNegocio.

Capa Datos
Capa Negocio

Lic. David I. López Pérez 6


Clic visual C#,
Aplicación de
Windows Forms
Nombre
CapaPresentacion
Capa presentación de Windows
Form.

Lic. David I. López Pérez 7


Eliminar las clases generadas por defecto de la
bibliotecas de clase.
Obteniendo el siguiente resultado

Explorador de soluciones.

Lic. David I. López Pérez 8


• Realizar referencias de las capas.
CapaNegocio con Referencia a CapasDatos.
CapasPresentacion con Referencia a CapaNegocio.

Explorador de soluciones.

Lic. David I. López Pérez 9


Codificar-Capa de Acceso a Datos
•Agregamos una clase para la conexión a nuestro servidor SQL Server (DatosConexion.cs)

using System;
using System.Data.SqlClient;
using System.Data;
namespace CapaDatos
{
class DatosConexion
{
private SqlConnection Conexion = new SqlConnection("data source=DAVID-LOPEZ\\SQLEXPRESS;initial
catalog=Practica;integrated security=true");
public SqlConnection AbrirConexion()
{
if (Conexion.State == ConnectionState.Closed)
Conexion.Open();
return Conexion;
}
public SqlConnection CerrarConexion()
{
if (Conexion.State == ConnectionState.Open)
Conexion.Close();
return Conexion;
}
}
}
Lic. David I. López Pérez 10
Codificar-Capa de Acceso a Datos
•Agregamos una clase para la consultas de datos a nuestro servidor SQL Server (CD_Productos.cs)
using System;
using System.Data.SqlClient;
using System.Data;
namespace CapaDatos
{
class CD_Productos
{
private DatosConexion conexion = new DatosConexion();
SqlDataReader leer;
DataTable tabla = new DataTable();
SqlCommand comando = new SqlCommand();
public DataTable Mostrar()
{
comando.Connection = conexion.AbrirConexion();
comando.CommandText = "MostrarProductos";
comando.CommandType = CommandType.StoredProcedure;
leer = comando.ExecuteReader();
tabla.Load(leer);
conexion.CerrarConexion();
return tabla;
}
Lic. David I. López Pérez 11
Codificar-Capa de Acceso a Datos
•Método Insertar Datos.

public void Insertar(string nombre, string desc, string marca, double precio, int stock)
{
comando.Connection = conexion.AbrirConexion();
comando.CommandText = "InsetarProductos";
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.AddWithValue("@nombre", nombre);
comando.Parameters.AddWithValue("@descrip", desc);
comando.Parameters.AddWithValue("@Marca", marca);
comando.Parameters.AddWithValue("@precio", precio);
comando.Parameters.AddWithValue("@stock", precio);
comando.ExecuteNonQuery();
comando.Parameters.Clear();
conexion.CerrarConexion();
}

Lic. David I. López Pérez 12


Codificar-Capa de Acceso a Datos
•Método Editar Datos.

public void Editar(string nombre, string desc, string marca, double precio, int stock, int id)
{
comando.Connection = conexion.AbrirConexion();
comando.CommandText = "EditarProductos";
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.AddWithValue("@nombre", nombre);
comando.Parameters.AddWithValue("@descrip", desc);
comando.Parameters.AddWithValue("@Marca", marca);
comando.Parameters.AddWithValue("@precio", precio);
comando.Parameters.AddWithValue("@stock", precio);
comando.Parameters.AddWithValue("@id", id);
comando.ExecuteNonQuery();
comando.Parameters.Clear();
conexion.CerrarConexion();
}

Lic. David I. López Pérez 13


Codificar-Capa de Acceso a Datos
•Método Eliminar Datos.

public void Eliminar(int id)


{
comando.Connection = conexion.AbrirConexion();
comando.CommandText = "EliminarProducto";
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.AddWithValue("@idpro", id);
comando.ExecuteNonQuery();
comando.Parameters.Clear();
conexion.CerrarConexion();
}
} //cierre de la clase CD_productos

}//Cierre namespace

Lic. David I. López Pérez 14


Codificar-Capa de Negocio
using System;
using System.Data;
•Agregamos una clase para el Objeto de Negocio de Producto (CN_Productos.cs),
using System.Data.SqlClient; en esta clase puedes realizar toda la lógica de negocio, validaciones y seguridad,
using CapaDatos; necesitamos importar la capa de acceso a datos.
namespace CapaNegocio
{
public class CN_Productos
{
private CD_Productos objetoCD = new CD_Productos();
public DataTable MostrarProd() {
DataTable tabla = new DataTable();
tabla = objetoCD.Mostrar();
return tabla;
}
public void InsertarPRod ( string nombre,string desc,string marca,string precio, string stock){

objetoCD.Insertar(nombre,desc,marca,Convert.ToDouble(precio),Convert.ToInt32(stock));}

public void EditarProd(string nombre, string desc, string marca, string precio, string stock,string id)
{
objetoCD.Editar(nombre, desc, marca, Convert.ToDouble(precio), Convert.ToInt32(stock),Convert.ToInt32(id));
}
public void EliminarPRod(string id) {
objetoCD.Eliminar(Convert.ToInt32(id));}
}

Lic. David I. López Pérez 15


Codificar CapaPresentacion
Establecer el formulario de inicio para el proyecto

Lic. David I. López Pérez 16


Codificar CapaPresentacion
Realizar la siguiente interfaz en el Form1

txtNombre
txtDesc
txtMarca
txtPrecio
txtStock datagridview1

btnGuardar

btnEditar btnEliminar

Lic. David I. López Pérez 17


Codificar CapaPresentacion Form1.cs
using System;
using CapaNegocio;
namespace CapaPresentacion
{
public partial class Form1 : Form
{
CN_Productos objetoCN = new CN_Productos();
private string idProducto = null;
private bool Editar = false;

public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MostrarProdctos();
}
private void MostrarProdctos()
{
CN_Productos objeto = new CN_Productos();
dataGridView1.DataSource = objeto.MostrarProd();
}
Lic. David I. López Pérez 18
Codificar CapaPresentacion Form1.cs ---- Boton editar.

private void btnEditar_Click(object sender, EventArgs e)


{
if (dataGridView1.SelectedRows.Count > 0)
{
Editar = true;
txtNombre.Text = dataGridView1.CurrentRow.Cells["Nombre"].Value.ToString();
txtMarca.Text = dataGridView1.CurrentRow.Cells["Marca"].Value.ToString();
txtDesc.Text = dataGridView1.CurrentRow.Cells["Descripcion"].Value.ToString();
txtPrecio.Text = dataGridView1.CurrentRow.Cells["Precio"].Value.ToString();
txtStock.Text = dataGridView1.CurrentRow.Cells["Stock"].Value.ToString();
idProducto = dataGridView1.CurrentRow.Cells["Id"].Value.ToString();
}
else
MessageBox.Show("seleccione una fila por favor");
}

Lic. David I. López Pérez 19


Codificar CapaPresentacion Form1.cs ---- Boton Guardar.
private void btnGuardar_Click_(object sender, EventArgs e)
{
//INSERTAR
if (Editar == false)
{
try
{
objetoCN.InsertarPRod(txtNombre.Text, txtDesc.Text, txtMarca.Text, txtPrecio.Text, txtStock.Text);
MessageBox.Show("se inserto correctamente");
MostrarProdctos();
limpiarForm();
}
catch (Exception ex)
{
MessageBox.Show("no se pudo insertar los datos por: " + ex);
}
}
//EDITAR
if (Editar == true)
{
try
{
objetoCN.EditarProd(txtNombre.Text, txtDesc.Text, txtMarca.Text, txtPrecio.Text, txtStock.Text, idProducto);
MessageBox.Show("se edito correctamente");
MostrarProdctos();
limpiarForm();
Editar = false;
}
catch (Exception ex)
{
MessageBox.Show("no se pudo editar los datos por: " + ex);
Lic. David I. López Pérez
} 20
Codificar CapaPresentacion Form1.cs ---- Boton Eliminar.

private void btnEliminar_Click(object sender, EventArgs e)


{
if (dataGridView1.SelectedRows.Count > 0)
{
idProducto = dataGridView1.CurrentRow.Cells["Id"].Value.ToString();
objetoCN.EliminarPRod(idProducto);
MessageBox.Show("Eliminado correctamente");
MostrarProdctos();
}
else
MessageBox.Show("seleccione una fila por favor");

Lic. David I. López Pérez 21


Codificar CapaPresentacion Form1.cs ---- Limpiar formulario

private void limpiarForm()


{
txtDesc.Clear();
txtMarca.Text = "";
txtPrecio.Clear();
txtStock.Clear();
txtNombre.Clear();
}

Lic. David I. López Pérez 22


Fin.
Lic. David I. López Pérez

23

También podría gustarte