Está en la página 1de 36

Programacion en tres capas en C# usando asp.

net
19JUN
En este post vamos a realizar una aplicacion usando visual studio 2008 en c#, en donde paso a paso se mostrara como
crear un programa en c# utilizando tres capas, donde la tercera capa de presentacion se realizara en asp.net, este blog lo
he realizado con lujo de detalles para que no existan dudas, pero aun asi, si las hay favor de comentarlas.

Empecemos
Para comenzar debemos tener una fundamentacion teorica, asi que recomiendo revisen como funciona la programacion en
tres capas en el siguiente articulo de Wikipedia Programacion por capas antes de comenzar con este lab.

Ahora los requerimientos


Antes de comenzar necesitamos instalar
1.
2.

Visual Studio (se puede instalar 2008 o 2010 en este lab se usara 2008)
SQL Server (se puede instalar 2005 2008 2008R2 cualquier otro gestor teniendo en cuenta que la cadena
de conexion cambiara, se recomienda usar SQL SERVER ya que el ejemplo que se muestra tiene la intencion de evitar
errores pero si tienes experiencia en otro gestor usalo)

Empezemos con la cadena de conexion


La cadena de conexion es una de las partes mas importantes de este programa puesto que es con lo que nuestra base de
datos se comunicara con el programa, especificamente solamente con la capa de datos, si tienes algo de experiencia con
sql server esto deberia ser algo sencillo para ti.
Despues de instalar SQL Server, se realiza una prueba de conexion donde podras ingresar tu login sa y tu password (el cual
se ingreso al instalar SQL), despues de que se realize esta prueba satisfactoriamente, desconectate, con el boton

vuelve a conectarte con el boton


, asi podemos asegurar que lo que vamos a colocar en la cadena de conexion sean
parametros validos, y asi evitar errores.
Para realizar la cadena de conexion debemos saber 4 datos.
1.
El nombre de nuestro servidor identificado como Data Source en la cadena de conexion
2.
El nombre de nuestra base de datos como Initial Catalog
3.
El nombre de el usuario User
4.
El password con el que se identifica el usuario Password
Todos estos datos a exepcion de el nombre de la base de datos (Initial Catalog) los encontramos cuando nos conectamos
con sql server asi que la siguente imagen aclara los siguientes pasos de como construir la cadena de conexion.

Para crear la cadena solo debemos substituir los datos mostrados en la imagen anterior aqui dejo la cadena para que no
exista confusion a la hora de transcibir
@"Data Source=???????????;Initial Catalog=??????;User ID=sa;Password=????????"

Nuestra ultima duda para la cadena de conexion es Initial Catalog la cual para efectos de este lab le
asignaremos Empleados entonces nuestra cadena quedaria de la siguiente manera
@"Data Source=???????????;Initial Catalog=Empleados;User ID=sa;Password=????????"

Si cuentas con conocimientos de base de datos solo asigna cualsea el nombre de tu base de datos.

Crear la base de datos e insertar un registro


Ahora nos conectamos en SQL Server y dando click en la opcion New Query escribimos create database Empleados y
presionamos F5 nos deberia mandar el mensaje Command(s) completed successfully., con eso hemos creado la base de
datos llamada Empleados ahora tenemos que decirle a SQL que esa es la base de datos que queremos usar entonces
escribimos use Empleados y presionamos nuevamente F5 y nos vuelve a enviar el mensaje Command(s) completed
successfully. ya creada la base de datos necesitamos crear una tabla donde se puedan guardar nuestros datos que vamos
a utilizar para esta nuestra aplicacion entonces escribimos el siguiente script y presionamos F5

create table Datos

2
3

(
id int identity primary key not null,

4
5

strNombre varchar(20),
strApellido varchar(20),
intEdad tinyint

7
Este script crea la una tabla llamada Datos la cual tiene 4 campos:
1.
2.
3.

4.

id : es la llave primaria, es de tipo entero y no acepta valores nulos, y sirve para darle un identificar al empleado.
strNombre: es de tipo varchar con capacidad para 20 caracteres el cual nos sirve para almacenar el nombre del
empleado
strApellido: es de tipo varchar con capacidad para 20 caracteres el cual nos sirve para almacenar el apellido del
empleado
intEdad: es de tipo entero de capacidad para guardar valores de hasta 127 el cual nos sirve para almacenar la
edad del empleado

Ahora ya con la tabla Datos vamos a hacerlo un poco mas interesante, crearemos un procedimiento almacenado para que
nuestro programa pueda guardar los datos introducidos desde la capa de presentacion.
En SQL escribimos el siguiente script para crear nuestro procedimiento y presionamos F5

1
2

create proc insDatos


(

3
4
5

@nombre varchar(20),
@apellido varchar(20),
@edad int
)

as insert into Datos values(@nombre,@apellido,@edad)

7
Este procedimiento realiza una insert y lo ejecutamos de la siguiente manera con su correspondiente F5 despues de
escribirlo

exec insDatos 'Juan','Perez',23

solo necesitamos saber los el tipo de argumentos que toma y el nombre del procedimiento. Ahora solo nos falta verificar que
el registro se haya incluido en nuestra base de datos eso lo realizamos con lo siguiente seguido de un F5

select * from Datos

Con esto sql nos presentara en la ventana Results que se muestra en la imagen de bajo, con los datos que corresponden a
la insercion realizada por nuestro procedimiento.

Si lo deseas y tienes experiencia con scripts aqui pongo todo lo que se necesita para nuestro lab un simple copy/paste
realizara todo lo necesario

create database Empleados


GO

2
3
4

use Empleados
GO
create table Datos
(

5
6
7

id int identity primary key not null,


strNombre varchar(20),
strApellido varchar(20),
intEdad tinyint

8
9
1
0
11

)
GO
create proc insDatos
(
@nombre varchar(20),
@apellido varchar(20),

2
1
3
1
4
1
5
1
6
@edad int

1
7

)
as insert into Datos values(@nombre,@apellido,@edad)

1
8
1
9
2
0

GO
exec insDatos 'Juan','Perez',23
GO
select * from Datos
GO

2
1
2
2
2
3
2
4
Con esto finalizamos en nuestra base de datos es hora de programar en 3 capas

Capa de datos
Ya tenemos configurada nuestra base de datos lista para ser usada, ahora abriremos Visual Studio y crearemos un nuevo
proyecto en apartado tipo de proyecto seleccionamos Visual C# y despues seleccionamos Windows, dentro de plantillas
seleccionamos Plantillas instaladas de Visual Studio despues Biblioteca de Clases, llamaremos a nuestro proyecto Datos y
la solucion llamada TresCapas, en la siguiente imagen se aclara los pasos antes descritos para la configuracion de nuestra
solucion

Ahora en Visual Studio nos presenta una clase llamada Class1.cs que nosotros no pedimos, por lo que la eliminaremos,
haciendo click derecho sobre la clase en el explorador de soluciones y seleccionaremos eliminar, a continuacion Visual
Studio nos pedira una confirmacion a la cual aceptaremos. En la siguiente imagen se muestra el proceso de borrar
Class1.cs

Ahora crearemos una clase llamada Configuracion en la cual pondremos nuesta cadena de conexion que anteriormente
generamos para ello en el explorador de soluciones seleccionaremos el proyecto Datos y le haremos un click derecho para
que nos muestre las opciones en ellas seleccionaremos agregar y por ultimo en el menu emergente seleccionaremos clase,
todo el proceso se muestra en la siguiente imagen

El paso anterior nos llevara a una pantalla donde se muestra todos los elementos que Visual Studio puede agregar a
nuestro proyecto, pero como hemos elegido agregar una clase, Visual Studio tiene todo seleccionado por nosotros lo unico
que hay que hacer en este paso es escribir el nombre de nuestra clase la cual llamaremos Configuracion en el cuadro de
texto y dar click en agregar, a continuacion se muestra una imagen del proceso.

Ahora Visual Studio nos muestra la estructura basica de nuestro programa, para hacer nuestra clase de configuracion
tenemos que hacer publica nuestra clase agregandole la palabra reservada public antes de class y acontinuacion creamos
una cadena de caracteres que contendra la cadena de conexion antes creada.
y con esto ya establecido le crearemos un metodo a la clase Configuracion el cual se llamara CadenaConexion, y se
encargara de proporcionar la cadena de conexion a cualquier proceso que la necesite.
el codigo siguiente muestra como deberia de quedar nuestra clase y abajo se muestra una imagen de la clase en Visual
Studio.

public class Configuracion


{

2
3

static string cadenaConexion =


@"Data Source=???;Initial Catalog=Empleados;User ID=sa;Password=???";

4
5

public static string CadenaConexion


{

6
7

get { return cadenaConexion; }


}

8
9

1
0
En el dado casi que se desee acceder con autentificacion de windows lo que se tiene que hacer es agregar
Trusted_Connection=true o Integrated Security=SSPI a la linea de conexion en vez de el usuario y el password.

El siguiente paso es agregar otra clase de la misma manera que lo hicimos con Configuracion, pero esta vez nuestra clase
se llamara MetodosDatos, esta clase tendra la tarea de acceder a la base de datos para los metodos para obtener la
informacion de nuestra base de datos.
Al igual que configuracion le agregaremos la propiedad de public, pero ademas a esta clase le agregaremos dos
referencias.

1
2

using System.Data.SqlClient;
using System.Data;

Las cuales se insertan antes del namespace estas referencias nos sirven para llamar metodos ya establecidos en C#, A
continuacion agregaremos los siguientes tres metodos
CrearComando
Este metodo nos servira para crear un comando sql estandard como un select el cual sera regresado por su metodo return

public static SqlCommand CrearComando()


{

string _cadenaConexion = Configuracion.CadenaConexion;

3
4
SqlConnection _conexion = new SqlConnection();

_conexion.ConnectionString = _cadenaConexion;

SqlCommand _comando = new SqlCommand();


_comando = _conexion.CreateCommand();

_comando.CommandType = CommandType.Text;

return _comando;

1
0
CrearComandoProc
Este metodo al igual que el anterior nos crea un comando sql, pero con la diferencia que este metodo nos creara nuestro
comando de manera que pueda ejecutar nuestro procedimiento almacenado que establecimos anteriormente
llamado InsDatos.

1
2
3

public static SqlCommand CrearComandoProc()


{
string _cadenaConexion = Configuracion.CadenaConexion;

SqlConnection _conexion = new SqlConnection(_cadenaConexion);


SqlCommand _comando = new SqlCommand("InsDatos", _conexion);

_comando.CommandType = CommandType.StoredProcedure;

6
7

return _comando;
}

8
EjecutarComandoInsert
Este metodo obtiene como parametro un comando sql que proviene de el metodo anterior CrearComandoProc, este metodo
ejecuta el procedimineto almacenado que se le ha asignado al comando. En la siguiente clase que agregaremos veremos
como se le asigna el procedimiento almacenado a este comando.

public static int EjecutarComandoInsert(SqlCommand comando)


{

2
3

try
{

4
5
6
comando.Connection.Open();

return comando.ExecuteNonQuery();

catch { throw; }
finally

1
0

{
comando.Connection.Dispose();

11
1
2

comando.Connection.Close();
}
}

1
3
1
4
EjecutarComandoSelect
Este metodo ejecutara un comando select el cual nos regresara un datatable con todos los registros que se encuentren en
alguna tabla dada, toma como parametro el comando que contiene la sentencia sql select.

public static DataTable EjecutarComandoSelect(SqlCommand comando)


{

2
3

DataTable _tabla = new DataTable();


try{
comando.Connection.Open();

SqlDataAdapter adaptador = new SqlDataAdapter();

adaptador.SelectCommand = comando;

6
7

adaptador.Fill(_tabla);
}
catch (Exception ex)

8
9

{ throw ex; }
finally

1
0
11
1
2
1
3

{ comando.Connection.Close(); }
return _tabla;
}

1
4
1
5
Estas serian todas las clases que MetodosDatos.cs contendra, para evitar confusiones he agregado una imagen que
muestra la estructura completa de nuestro metodo.

Ahora crearemos la clase que generara los comandos que se pasaron como parametros en la clase
anteriorMetodosDatos.cs.

Al igual que creamos las clases Configuracion y MetodosDatos anteriores crearemos una clase llamadaAccesoDatos y se
le agregara la propiedad public y las referencias

1
2

using System.Data.SqlClient;
using System.Data;

de la misma manera que se realizo en la clase MetodosDatos.cs. En esta clase utilizaremos dos metodos:
Insert Esta clase obtiene un comando sql proveniente de la clase MetodosDatos de su metodo CrearComandoProc le
agrega los parametros que se necesitan para completar el procedimiento almacenado y despues lo ejecuta con el metodo
EjecutarComandoInsert que se encuentra en la clase MetodosDatos, de esta manera podemos ingresar informacion a
nuestra base de datos tan solo con asignarle parametros a nuestro metodo Insert el cual tien asignados 3 parametros
Nombre, Apellido y Edad los cuales son los campos que tenemos asignados en nuestra base de datos.

1
2
3

public int Insert(string Nombre, string Apellido, int Edad)


{
SqlCommand _comando = MetodosDatos.CrearComandoProc();

_comando.Parameters.AddWithValue("@nombre", Nombre);
_comando.Parameters.AddWithValue("@apellido", Apellido);

_comando.Parameters.AddWithValue("@edad", Edad);

6
7

return MetodosDatos.EjecutarComandoInsert(_comando);
}

8
ObtenerEmpleados Esta clase obtiene un comando de el metodo CrearComando de la Clase Metodos Datos lo almacena
en _comando y despues le agrega la sentencia a ejecutar y por medio de el metodo EjecutarComandoSelect la ejecuta y
nos regresa un DataTable que es un objeto que datos que contiene la estructura de una tabla (filas, columnas, registros,
etc),

1
2

public static DataTable ObtenerEmpleados()


{

SqlCommand _comando = MetodosDatos.CrearComando();


_comando.CommandText = "SELECT * FROM Datos";

return MetodosDatos.EjecutarComandoSelect(_comando);

6
Estas dos clases integran a AccesoDatos.cs en la siguiente imagen se muestra la estructura completa

Con esto hemos terminado con nuestra capa de datos es hora de crear nuestra capa de negocio.

Capa de negocio
Para crear nuestra capa de negocio empezaremos por crear un nuevo proyecto, para esto nos situaremos en el explorador
de soluciones y le haremos un click derecho a nuestra solcion llmada Tres Capas la cual nos presentara un menu y
elegiremos Agregar y en el menu emergente seleccionaremos Nuevo Proyeto el proceso se muestra en la siguiente imagen

Ahora Visual estudio nos presenta todos los tipos de proyectos que podemos agregar a nuestra solucion, al igual que en
Datos agregaremos una biblioteca de clases para ello en tipos de proyecto seleccionamos Windows y en plantillas
seleccionamos Biblioteca de Clases, despues le asignamos el nombre de nuestra segunda capa en esta caso le
llamaremos Negocio y le daremos aceptar. el proceso ilustra acontinuacion.

De igual manera que realizamos con la capa de Datos, Visual Studio nos presenta una clase Class1.cs que no pedimos por
lo que la borraremos y crearemos una nueva llamada AccesoLogica esta sera la encargada de enviar y recibir informacion
de las dos capas la de Datos y la de Presentacion.
Ya con nuestra clase AccesoLogica.cs necesitamos agregar la referencia de nuestra capa anterior por lo que en
referencias de el proyecto negocio le haremos un click derecho y seleccionaremos agregar referencia.

Visual Studio nos presenta con una ventana en la cual podemos elegir varios tipos de referencias, en esta ventana
seleccionaremos la pestaa de Proyectos y ahi nos aparece nuestra biblioteca de clases Datos la cual esta contenida en
nuestra Solucion llamada TresCapas. la seleccionamos y aceptamos

Ya con la referencia agregada, la podemos usar en nuestra clase AccesoLogica para usarla debemos agregarla de igual
manera que lo hicimos en las clases anteriormente creadas, en la parte superior de nuestra clase agregamos

1
2

using System.Data;
using System.Data.SqlClient;

Ahora agregaremos la propiedad de public a nuestra clase AccesoLogica.


Con lo anterior en su lugar podemos empezar a crear nuestros metodos para nuestra clase que en este caso seran solo
dos ObtenerEmpleados e Insert
El metodo ObtenerEmpleados de esta clase AccesoLogica utiliza el metodo con el mismo nombre que se establecio en la
capa de Datos que se encuentra en AccesoDatos, el cual recordaremos que nos regresa un Datatable conteniendo el
resultado de la sentencia select. de esta manera la capa de negocio se comunica con la capa de datos y obtiene
informacion proveniente de la base de datos.

1
public static DataTable ObtenerEmpleados()

2
3

{
return AccesoDatos.ObtenerEmpleados();
}

4
El metodo Insert recibe los parametros Nombre, Apellido y Edad y los envia por medio de una instancia de AccesoDatos a
su metodo Insert.

public int Insert(string Nombre, string Apellido, int Edad)

2
{

3
4

AccesoDatos acceso = new AccesoDatos();


return acceso.Insert(Nombre, Apellido, Edad);
}

5
Todo lo anteriormente descrito se resume en la siguiente imagen

Con esto terminamos nuestra capa de Negocio y continuamos con nuestra ultima capa la capa de Presentacion.

Capa de presentacion
La ulima capa sera de presentacion y la realizaremos en ASP.NET, para esto debemos agregar un proyecto a nuestra
solucion, para ello en haremos click derecho en nuestra solucion llamada TresCapas seleccionaremos agregar y
posteriormente Nuevo Proyecto.

A continuacion se muestra la pantalla de agregar nuevo proyecto en el cual seleccionaremos en tipo de proyectos, Visual
C# y acontinuacion Web, ahora en plantillas seleccionaremos Aplicacion Web ASP.NET y le asignaremos el nombre de
Presentacion y aceptaremos.

Ahora Visual Studio nos presentara Default.aspx el cual es un formulario web que contiene etiquetas de tipo HTML y XML el
cual nos sirve para presentar la informacion a nuestro usuario. En esta ventana Visual Studio nos muestra lo que contiene
Default.aspx que es la estructura basica de una aplicacion web.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Presentacion._Default" %>

2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

3
4
5
6

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Pgina sin ttulo</title>
</head>

7
8
9

<body>
<form id="form1" runat="server">
<div>

1
0
11
1
2
1
3
1
4

</div>
</form>
</body>
</html>

1
5
1
6
Ahora apartir de esto empezaremos a agregar los elementos que necesitaremos para nuestra ultima capa, Para empezar
cambiaremos el titulo de la pagina modificandole el title, le pondremos Tres Capas como titulo como se muestra
acontinuacion
<title>Tres Capas</title>
dentro de la etiqueta <div> agregaremos una etiqueta llamada lblMensaje la cual se encargara de darle informacion a
nuestro usuario de lo que esta sucediendo con nuestro programa.

1
2
3

<div>
<asp:Label ID="lblMensaje" runat="Server" ForeColor="red" EnableViewState="False"/>
</div>

Despues de haber agregado nuestra etiqueta debajo de ella agregaremos una tabla la cual contendra 7 filas.

<asp:Label ID="lblMensaje" runat="Server" ForeColor="red" EnableViewState="False"/>


<table style="border:2px solid #cccccc;">

2
3
4

<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>

<tr></tr>

6
7
<tr></tr>

8
9

<tr></tr>
</table>

1
0
Se escribiran acontinuacion el contenido de cada fila de la tabla.
Fila 1: A esta fila por ser el encabezado se le cambiara el estilo, tendra el fondo azul y color de letra blanco, y se expande a
lo largo de toda la tabla ocupando las 3 columnas que contendra nuestra tabla, en el encabezado contrendra el mensaje de
Agregar Registros

1
2
3

<tr style="background-color:#507CD1;color:White;">
<th colspan="3">Agregar Registros</th>
</tr>

Fila 2: Esta fila contendra tres columnas identificadas por la etiqueta <td> en la primera columna se mostrara el mensaje
Nombre para hacer referencia a el parametro necesario para obtener el nombre, en la segunda columna, se colocara un
textbox para que el usuario introduzca el nombre a guardar en la base de datos el cual tendra el nombre de txtNombre, la
ultima columna contiene un validador de nombre val1 que tendra la funcion de avisar al usuario que ha cometido un error al
ingresar datos en txtNombre.

<tr>
<td>Nombre:</td>

2
3
4

<td>
<asp:TextBox ID="txtNombre" runat="Server"></asp:TextBox>
</td>
<td>

<asp:RequiredFieldValidator ID="val1" runat="Server" Text="*" ControlToValidate="txtNombre"

6
7

Display="dynamic"></asp:RequiredFieldValidator>
</td>
</tr>

8
9
1

0
Fila 3: Al igual que la fila anterior tiene 3 columnas, en la primera columna el mensaje nombre en la segunda un textbox el
con el nombre de txtApellido el cual nos provee de el apellido a guardar en la base de datos y por ultimo en la columna 3 un
validador de nombre val2 el cual se encarga de verificar que el usuario indroduzca valores correctos en txtApellido.

1
2
3
4

<tr>
<td>
Apellido:

5
6

</td>
<td>
<asp:TextBox ID="txtApellido" runat="Server"></asp:TextBox>

</td>

<td>
<asp:RequiredFieldValidator ID="val2" runat="Server" Text="*" ControlToValidate="txtApellido"

Display="dynamic"></asp:RequiredFieldValidator>

1
0

</td>
</tr>

11
1
2
Fila 4: Esta fila en su columna 1 contiene el mensaje Edad, en la segunda columna se encuentra un textbox de nombre
txtEdad el cual es mas pequeo que los textbox anteriores por su propiedad columns, en la ultima columna se encuentra un
validador de nombre val3 este validador verifica que el usuario solo ingrese numeros en el textbox txtEdad, al ocurrir este
error se le presenta al usurario un mensaje de error.

<tr>
<td>

2
3
4

Edad:
</td>
<td>
<asp:TextBox ID="txtEdad" runat="Server" Columns="4"></asp:TextBox>

5
6

</td>
<td>

7
8
9
<asp:RequiredFieldValidator ID="val3" runat="Server" Text="*" ControlToValidate="txtEdad"

1
0

Display="dynamic"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="Comp" runat="Server" Text="Solo Enteros" ControlToValidate="txtEdad"

11

Operator="DataTypeCheck" Type="Integer"></asp:CompareValidator>

1
2

</td>
</tr>

1
3
1
4
Fila 5: La fila cinco contendra dos botones uno nos servira para enviar la informacion recolectada de los textbox y enviarla a
la base de datos el otro boton nos servira para recibir todos los registros contenidos en la base de datos los cuales tendran
un evento OnClick llamados Agregar y gvMostrar respectivamente.

1
2
3

<tr>
<td>&amp;nbsp;</td>
<td>

4
5
6

<asp:Button ID="btnEnviar" runat="server" Text="Enviar" OnClick="Agregar" />


</td>
<td>
<asp:Button ID="Load" runat="server" Text="Mostrar" OnClick="gvMostrar" />

7
8

</td>
</tr>

9
Fila 6:Esta fila solo servira para separar a los botones de la fila 5 con el gridview de la fila 7.

<tr>
<td/>

</tr>

3
Fila 7: En esta fila se encuentra el GridView que contendra los datos que previamente se habran ido agregando a nuestra
base de datos. En este GridView se tienen que identificar los nombres de los campos que se quieren mostrar en la
propiedad BoundField DataField y en la propiedad de HeaderText tenemos el nombre de el campo a mostrar en nuestra
aplicacion.

1
2
<td colspan="3" align=center>

3
4

<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="false">


<Columns>
<asp:BoundField DataField="id" HeaderText="Id" />

<asp:BoundField DataField="strNombre" HeaderText="Nombre" />

<asp:BoundField DataField="strApellido" HeaderText="Apellido" />


<asp:BoundField DataField="intEdad" HeaderText="Edad" />

</Columns>

8
9

</asp:GridView>
</td>

1
0
Con lo anterior definido, hemos completado la Interface de usuario, el codigo completo se presenta acontinuacion asi como
la ilustracion de como debe quedar.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Presentacion._Default" %>

2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

3
4
5
6

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Tres Capas</title>
</head>

7
8

<body>
<form id="form1" runat="server">

<div>
<asp:Label ID="lblMensaje" runat="Server" ForeColor="red" EnableViewState="False"/>

1
0

<table style="border:2px solid #cccccc;">


<tr style="background-color:#507CD1;color:White;">

11
1
2
1
3
1
4
1
5
1
6

<th colspan="3">Agregar Registros</th>


</tr>
<tr>
<td>
Nombre:
</td>
<td>
<asp:TextBox ID="txtNombre" runat="Server"></asp:TextBox>
</td>
</tr>
<tr>

1
7

<td>

1
8

</td>

1
9
2
0
2
1
2
2
2
3
2
4
2

Apellido:

<td>
<asp:TextBox ID="txtApellido" runat="Server"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="val2" runat="Server" Text="*" ControlToValidate="txtApellido"
Display="dynamic"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
Edad:
</td>
<td>
<asp:TextBox ID="txtEdad" runat="Server" Columns="4"></asp:TextBox>

</td>
<td>

2
6

<asp:RequiredFieldValidator ID="val3" runat="Server" Text="*" ControlToValidate="txtEdad"


Display="dynamic"></asp:RequiredFieldValidator>

2
7

<asp:CompareValidator ID="Comp" runat="Server" Text="Solo Enteros" ControlToValidate="txtEdad"


Operator="DataTypeCheck" Type="Integer"></asp:CompareValidator>

2
8

</td>
</tr>

2
9

<tr>
<td>&amp;nbsp;</td>

3
0

<td>
<asp:Button ID="btnEnviar" runat="server" Text="Enviar" OnClick="Agregar" />

3
1

</td>
<td>

3
2

<asp:Button ID="Load" runat="server" Text="Mostrar" OnClick="gvMostrar" />


</td>

3
3
3
4
3
5
3
6

</tr>
<tr>
<td/>
</tr>
<tr>
<td colspan="3" align=center>
<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="false">
<Columns>

3
7

<asp:BoundField DataField="id" HeaderText="Id" />


<asp:BoundField DataField="strNombre" HeaderText="Nombre" />

3
8
3
9
4
0

<asp:BoundField DataField="strApellido" HeaderText="Apellido" />


<asp:BoundField DataField="intEdad" HeaderText="Edad" />
</Columns>
</asp:GridView>
</td>
</tr>

4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5

</table>
</div>
</form>
</body>
</html>

6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
6
7
6
8
6
9
7
0
7
1

7
2
7
3
7
4
7
5
7
6
7
7
7
8
7
9

Para realizar la programacion de esta parte primero necesitamos agregar la referencia de nuestra capa de negocio, al igual
que lo hicimos en la capa anterior.

Seleccionaremos la capa de presentacion y le daremos un click derecho en referencias despues elegiremos agregar
referencia

En esta ventana seleccionaremos la pestaa de Proyectos donde nos aparecera la capa de Negocios y la capa de Datos
que ya hemos creado, seleccionamos la capa de Negocios y aceptamos.

Ahora debemos concluir nuestro programa, para esto solo basta con modificar el codigo que detras de nuestra interface,
para ello nos dirigimos a el explorador de soluciones seleccionamos nuestro proyecto presentacion dentro de el
encontraremos el archivo Default.aspx el cual modificamos anteriormente pero solo la parte de diseo ahora modificaremos
el codigo que realizara lo antes planteado, seleccionamos Default.aspx le hacemos un click derecho y seleccionarmos Ver
Codigo el cual nos llevara a el codigo detras de nuestra pagina.

Antes de empezar a escribir nuestro codigo necesitamos agregar la referencia de nuestra capa de Negocio, para ello
agregaremos la referencia

using Negocio;

Enseguida agregaremos una clase llamada Agregar la cual es un evento del botn Enviar de que se encuentra en la fila 5
de nuestra, esta clase sera la encargada de realizar todo el proceso de insertar un registro en la base de datos, utilizando
todo lo que hemos construido hasta ahora.
Esta clase funciona de la siguiente manera, verifica que los datos ingresados estn correctos de lo contrario se aborta y
sale de la ejecucin, en caso de que no se encuentren errores, se crea una instancia de la clase AccesoLogica que proviene
de nuestra capa de Negocios esta instancia se le da el nombre de negocio, despus se asigna todos los contenidos de los
textbox en una variable los cuales posteriormente nos sirven para pasar los parmetros requeridos para una insercin en
nuestra capa de negocio por medio de su mtodo insert el cual devuelve un resultado, el cual sera negativo en caso de que

ocurra un error en la base de datos. y a continuacion se manda un mensaje por medio de la etiqueta lblMensaje en caso de
que exista o no error en la insercin, por ultimo se libera la memoria de la instancia negocio.

1
2
3
4

protected void Agregar(object sender, EventArgs e)


{

if (!Page.IsValid)

return;

AccesoLogica negocio = new AccesoLogica();


string nombre = txtNombre.Text;

string apellido = txtApellido.Text;

int edad = Int32.Parse(txtEdad.Text);

1
0

int resultado = negocio.Insert(nombre,apellido,edad);


if (resultado > 0)

11

lblMensaje.Text = "Nuevo Registro Agregado Satisfactoriamente.";


else

1
2

lblMensaje.Text = "Nombre:

[<b>" + txtNombre.Text + "</b>] ya existe, agrege otro";

negocio = null;

1
3

1
4
1
5
Ahora agregaremos otra clase llamada gvMostrar la cual al igual que la anterior se ejecutara al hacer click en el botn
Mostrar, esta clase tendr la tarea de llenar el GridView con los datos contenidos en la base de datos, para ello obtiene sus
datos de la clase proveniente AccesoLogica llamada ObtenerEmpleados, el cual se le asigna como DataSource a nuestro
GridView y despus se le liga a el GridView con la funcin DataBind, por ultimo se deshace de todos los datos contenidos
en los textbox

protected void gvMostrar(object sender, EventArgs e)


{

2
GridView.DataSource = AccesoLogica.ObtenerEmpleados();

GridView.DataBind();

4
5

txtEdad.Text = txtNombre.Text = txtApellido.Text = "";


}

6
Ahora si deseamos ver la informacin contenida en nuestra base de datos, al momento que ingresemos a nuestra pagina
debemos agregar algo de codigo a nuestra clase Page_Load la cual C# nos ha proporcionado por defecto a la hora de crear
un proyecto ASP, esta clase se ejecuta justo antes de que la pagina se muestre, por ello si colocamos algo en esta clase,
esto aparecera al momento de cargar la pagina.
En esta clase solo agregamos una linea de codigo, en la cual nos referiremos al evento gvMostrar el cual hemos realizado
anteriormente, y lo utilizaremos para mostrar la informacion contenida en nuestra base de datos.

1
protected void Page_Load(object sender, EventArgs e)

if(!Page.IsPostBack)
gvMostrar(sender, e);

4
}

5
A continuacion el codigo completo de la capa de presentacion.

Con esto concluimos nuestro proyecto. pero antes de ejecutar nuestro proyecto por primera vez debemmos establecer la
capa de presentacion como proyecto de uni

También podría gustarte