Documento Programacion Capas

38
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. Visual Studio (se puede instalar 2008 o 2010 en este lab se usara 2008) 2. 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 y 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.

description

capas

Transcript of Documento Programacion Capas

Page 1: Documento Programacion Capas

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. Visual Studio (se puede instalar 2008 o 2010 en este lab se usara 2008)

2. 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  

y 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 conexion2. 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.

Page 2: Documento Programacion Capas

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

1 create table Datos

Page 3: Documento Programacion Capas

2

3

4

5

6

7

(

id int identity primary key not null,

strNombre varchar(20),

strApellido varchar(20),

intEdad tinyint

)

Este script crea la una tabla llamada Datos la cual tiene 4 campos:

1. id : es la llave primaria, es de tipo entero y no acepta valores nulos, y sirve para darle un identificar al empleado.2. strNombre: es de tipo varchar con capacidad para 20 caracteres el cual nos sirve para almacenar el nombre del

empleado

3. strApellido: es de tipo varchar con capacidad para 20 caracteres el cual nos sirve para almacenar el apellido del

empleado

4. 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

3

4

5

6

7

create proc insDatos

(

@nombre varchar(20),

@apellido varchar(20),

@edad int

)

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

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

escribirlo

1 exec insDatos 'Juan','Perez',23

Page 4: Documento Programacion Capas

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

1 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

1

2

3

4

5

6

7

8

9

10

11

create database Empleados

GO

use Empleados

GO

create table Datos

(

id int identity primary key not null,

strNombre varchar(20),

strApellido varchar(20),

intEdad tinyint

)

GO

create proc insDatos

(

@nombre varchar(20),

@apellido varchar(20),

Page 5: Documento Programacion Capas

12

13

14

15

16

17

18

19

20

21

22

23

24

@edad int

)

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

GO

exec insDatos 'Juan','Perez',23

GO

select * from Datos

GO

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

Page 6: Documento Programacion Capas

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

Page 7: Documento Programacion Capas

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.

Page 8: Documento Programacion Capas

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.

1

2

3

4

5

6

7

public class Configuracion

{

    static string cadenaConexion =

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

     

    public static string CadenaConexion

    {

        get { return cadenaConexion; }

    }

Page 9: Documento Programacion Capas

8

9

10

}

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

1

2

public static SqlCommand CrearComando()

{

    string _cadenaConexion = Configuracion.CadenaConexion;

Page 10: Documento Programacion Capas

3

4

5

6

7

8

9

10

    SqlConnection _conexion = new SqlConnection();

    _conexion.ConnectionString = _cadenaConexion;

    SqlCommand _comando = new SqlCommand();

    _comando = _conexion.CreateCommand();

    _comando.CommandType = CommandType.Text;

    return _comando;

}

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

4

5

6

7

8

public static SqlCommand CrearComandoProc()

{

    string _cadenaConexion = Configuracion.CadenaConexion;

    SqlConnection _conexion = new SqlConnection(_cadenaConexion);

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

    _comando.CommandType = CommandType.StoredProcedure;

    return _comando;

}

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.

1

2

3

public static int EjecutarComandoInsert(SqlCommand comando)

{

    try

    {

Page 11: Documento Programacion Capas

4

5

6

7

8

9

10

11

12

13

14

        comando.Connection.Open();

        return comando.ExecuteNonQuery();

    }

    catch { throw; }

    finally

    {

        comando.Connection.Dispose();

        comando.Connection.Close();

    }

}

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.

1

2

3

4

5

6

7

8

public static DataTable EjecutarComandoSelect(SqlCommand comando)

    {

    DataTable _tabla = new DataTable();

    try{

        comando.Connection.Open();

        SqlDataAdapter adaptador = new SqlDataAdapter();

        adaptador.SelectCommand = comando;

        adaptador.Fill(_tabla);

    }

    catch (Exception ex)

    { throw ex; }

Page 12: Documento Programacion Capas

9

10

11

12

13

14

15

    finally

    { comando.Connection.Close(); }

    return _tabla;

}

Estas serian todas las clases que MetodosDatos.cs contendra, para evitar confusiones he agregado una imagen que

muestra la estructura completa de nuestro metodo.

Page 13: Documento Programacion Capas

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

anteriorMetodosDatos.cs.

Page 14: Documento Programacion Capas

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

4

5

6

7

8

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);

    return MetodosDatos.EjecutarComandoInsert(_comando);

}

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

3

4

5

6

public static DataTable ObtenerEmpleados()

{

    SqlCommand _comando = MetodosDatos.CrearComando();

    _comando.CommandText = "SELECT * FROM Datos";

    return MetodosDatos.EjecutarComandoSelect(_comando);

}

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

Page 15: Documento Programacion Capas

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.

Page 16: Documento Programacion Capas

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 pestaña de Proyectos y ahi nos aparece nuestra biblioteca de clases Datos la cual esta contenida en

nuestra Solucion llamada TresCapas. la seleccionamos y aceptamos

Page 17: Documento Programacion Capas

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

2

3

4

public static DataTable ObtenerEmpleados()

{

return AccesoDatos.ObtenerEmpleados();

}

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

su metodo Insert.

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

Page 18: Documento Programacion Capas

2

3

4

5

{

AccesoDatos acceso = new AccesoDatos();

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

}

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.

Page 19: Documento Programacion Capas

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.

Page 20: Documento Programacion Capas

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.

1

2

3

4

5

6

7

8

9

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

 

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

 

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

<head runat="server">

    <title>Página sin título</title>

</head>

<body>

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

    <div>

Page 21: Documento Programacion Capas

10

11

12

13

14

15

16

 

    </div>

    </form>

</body>

</html>

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.

1

2

3

4

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

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

  <tr></tr>

  <tr></tr>

  <tr></tr>

  <tr></tr>

Page 22: Documento Programacion Capas

5

6

7

8

9

10

  <tr></tr>

  <tr></tr>

  <tr></tr>

</table>

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.

1

2

3

4

5

6

7

8

9

<tr>

  <td>Nombre:</td>

  <td>

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

  </td>

  <td>

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

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

  </td>

</tr>

Page 23: Documento Programacion Capas

10

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

5

6

7

8

9

10

11

12

<tr>

  <td>

    Apellido:

  </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>

  </td>

</tr>

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 pequeño 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.

1

2

3

4

5

<tr>

  <td>

    Edad:

  </td>

  <td>

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

Page 24: Documento Programacion Capas

6

7

8

9

10

11

12

13

14

  </td>

  <td>

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

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

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

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

  </td>

</tr>

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

4

5

6

7

8

9

<tr>

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

  <td>

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

  </td>

  <td>

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

  </td>

</tr>

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

1

2

3

<tr>

  <td/>

</tr>

Page 25: Documento Programacion Capas

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

3

4

5

6

7

8

9

10

<td colspan="3" align=center>

  <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>

  </asp:GridView>

</td>

Con lo anterior definido, hemos completado la Interface de usuario, el codigo completo se presenta acontinuacion asi como

la ilustracion de como debe quedar.

1

2

3

4

5

6

7

8

9

1

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

 

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

 

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

<head runat="server">

  <title>Tres Capas</title>

</head>

<body>

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

  <div>

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

Page 26: Documento Programacion Capas

0

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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

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

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

      </tr>

      <tr>

        <td>

          Nombre:

        </td>

        <td>

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

        </td>

      </tr>

      <tr>

        <td>

          Apellido:

        </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>

        </td>

      </tr>

      <tr>

        <td>

          Edad:

        </td>

        <td>

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

        </td>

        <td>

Page 27: Documento Programacion Capas

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

4

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

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

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

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

        </td>

      </tr>

      <tr>

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

        <td>

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

        </td>

        <td>

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

        </td>

      </tr>

      <tr>

        <td/>

      </tr>

      <tr>

        <td colspan="3" align=center>

          <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>

          </asp:GridView>

        </td>

      </tr>

    </table>

  </div>

Page 28: Documento Programacion Capas

1

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

  </form>

</body>

</html>

Page 29: Documento Programacion Capas

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

7

Page 30: Documento Programacion Capas

2

73

74

75

76

77

78

79

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

Page 31: Documento Programacion Capas

En esta ventana seleccionaremos la pestaña 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 diseño 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.

Page 32: Documento Programacion Capas

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

agregaremos la referencia

1 using Negocio;

Enseguida agregaremos una clase llamada Agregar la cual es un evento del botón 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 estén correctos de lo contrario se aborta y

sale de la ejecución, 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, después se asigna todos los

contenidos de los textbox en una variable los cuales posteriormente nos sirven para pasar los parámetros requeridos para

una inserción en nuestra capa de negocio por medio de su método insert el cual devuelve un resultado, el cual sera

Page 33: Documento Programacion Capas

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 inserción, por ultimo se libera la memoria de la instancia negocio.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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);

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

            if (resultado > 0)

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

            else

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

            negocio = null;

        }

Ahora agregaremos otra clase llamada gvMostrar la cual al igual que la anterior se ejecutara al hacer click en el botón

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 después se le liga a el GridView con la función DataBind, por ultimo se deshace de todos los datos contenidos

en los textbox

1 protected void gvMostrar(object sender, EventArgs e)

Page 34: Documento Programacion Capas

2

3

4

5

6

{

    GridView.DataSource = AccesoLogica.ObtenerEmpleados();

    GridView.DataBind();

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

}

Ahora si deseamos ver la información 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

2

3

4

5

protected void Page_Load(object sender, EventArgs e)

        {

            if(!Page.IsPostBack)

                gvMostrar(sender, e);

        }

A continuacion el codigo completo de la capa de presentacion.

Page 35: Documento Programacion Capas

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

capa de presentacion como proyecto de uni

Page 36: Documento Programacion Capas