You are on page 1of 71

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.

com

Este tutorial expone de manera sencilla paso a paso la administracin de una aplicacin usando MVC, el paradigma Model View Controller basndose en tres capas: Presentacin, Aplicacin y Datos. Gestiono lo bsico de una interface MDI ya que tutoriales de ventanitas y controles hay hasta por gusto, quise exponer la arquitectura de una aplicacin basada en los paradigmas mencionados como es implementar la lgica de programacin en la Base de Datos usando Procedimientos almacenados y administrar esta lgica desde la aplicacin. Se cumple con el principio de independecia si es que se programa en la Base de Datos y no en la aplicacin, la aplicacin es una simple interface o medio de comunicacin entre el usuario y la base de datos, evtandonos as el recompilar la aplicacin y permitindonos en su lugar focalizarnos en la programacin en la misma Base de Datos sin tener que cambiar la aplicacin. La idea de este tutorial es la de brindar al programador de software libre un conocimiento clave para que cuando encuentre este paradigma basado en plataformas .NET en alguna organizacin pueda entenderla y migrarla al software libre. Como mencion me he centrado en la arquitectura de la aplicacin, la implementacin de controles bonitos es un trabajo que particularmente no pienso hacer, para eso existen miles de tutoriales en la red. Programar usando MVC y CAPAS no es algo que se encuentre a diario, yo mismo sufr para implementar este tutorial, la parte difcil por decirlo as est aqu, la arquitectura, lo dems que es una simple cuestin de diseo lo conoce cualquiera. Este es mi ltimo tutorial en plataformas privativas y lo hago slo por dotar de conocimiento sencillo a aquellos amigos que quieran entender las arquitecturas .NET en las empresas y puedan luego migrarlas al software libre. Ahora mi pasin son la programacin competitiva y el Software libre, el hecho que uno cultive Software Libre no implica que uno no sea experto en otras plataformas (Soy Desarrollador 5 estrellas Platino DCE 2005), precisamente la comprensin de esta plataforma me llev a querer y a amar el software libre.

El Autor

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

ADMINISTRAR UNA BASE DE DATOS UTILIZANDO MVC (Model View Controller) y PROGRAMACIN POR CAPAS

SOFTWARE NECESARIO: SQL SERVER 2008 O 2005 Express que se instala por defecto con el Visual Studio. Si este es tu caso el Administrador de SQL 2008 lo puedes descargar de aqu: http://www.microsoft.com/download/en/details.aspx?id=22985

Si usas el SQL Express 2005 el administrador lo puedes descargar de aqu: http://www.microsoft.com/downloads/es-es/details.aspx? FamilyID=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796

Cualquier otra versin de SQL SERVER 2008 O 2005 (Ya viene con la interface de administracin).

VISUAL STUDIO 2010 O 2008

CONOCIMIENTOS: ADO .NET BSICO SQL SERVER BSICO T SQL BSICO VISUAL BASIC .NET BSICO

FUENTES: El cdigo Fuente de la aplicacin desarrollada en este tutorial lo puedes descargar de aqu: https://docs.google.com/open? id=0B_H9bnl3ECg6T3hSSmVmeEJTNGFHZ3RhTkUwUjhCQQ El BackUp de la Base de Datos lo puedes encontrar aqu: https://docs.google.com/open? id=0B_H9bnl3ECg6T1ZlMVpWZTZSWWFPZWRjZzV1LUxjUQ

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Arquitectura de ADO.NET
Tradicionalmente, el procesamiento de datos ha dependido principalmente de un modelo de dos niveles basado en una conexin. A medida que el procesamiento de datos utiliza cada vez ms arquitecturas de varios niveles, los programadores estn pasando a un enfoque sin conexin con el fin de proporcionar una escalabilidad mejor para sus aplicaciones.

Componentes de ADO.NET
Existen dos componentes de ADO.NET que se pueden utilizar para obtener acceso a datos y manipularlos: Proveedores de datos de .NET Framework El DataSet

Proveedores de datos de .NET Framework


Los proveedores de datos de .NET Framework son componentes diseados explcitamente para la manipulacin de datos y el acceso rpido a datos de slo lectura y slo avance. El objeto Connection proporciona conectividad a un origen de datos. El objeto Command permite tener acceso a comandos de base de datos para devolver datos, modificar datos, ejecutar procedimientos almacenados y enviar o recuperar informacin sobre parmetros. El objetoDataReader proporciona una secuencia de datos de alto rendimiento desde el origen de datos. Por ltimo, el objetoDataAdapter proporciona el puente entre el objeto DataSet y el origen de datos. El DataAdapter utiliza objetosCommand para ejecutar comandos SQL en el origen de datos tanto para cargar el DataSet con datos como para reconciliar en el origen de datos los cambios aplicados a los datos incluidos en el DataSet.

DataSet
El DataSet de ADO.NET est expresamente diseado para el acceso a datos independientemente del origen de datos. Como resultado, se puede utilizar con mltiples y distintos orgenes de datos, con datos XML o para administrar datos locales de la aplicacin. El DataSet contiene una coleccin de uno o ms objetos DataTable formados por filas y columnas de datos, as como informacin sobre claves principales, claves externas, restricciones y relaciones relativa a los datos incluidos en los objetos DataTable. En el diagrama siguiente se ilustra la relacin entre un proveedor de datos de .NET Framework y un DataSet. Arquitectura de ADO.NET

Elegir un DataReader o un DataSet


"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

A la hora de decidir si su aplicacin debe utilizar un DataReader (vea Recuperar datos mediante DataReader) o unDataSet (vea Utilizar DataSets en ADO.NET), debe tener en cuenta el tipo de funcionalidad que su aplicacin requiere. Use un DataSet para hacer lo siguiente: Almacene datos en la memoria cach de la aplicacin para poder manipularlos. Si solamente necesita leer los resultados de una consulta, el DataReader es la mejor eleccin. Utilizar datos de forma remota entre un nivel y otro o desde un servicio Web XML. Interactuar con datos dinmicamente, por ejemplo para enlazar con un control de formularios Windows Forms o para combinar y relacionar datos procedentes de varios orgenes. Realizar procesamientos exhaustivos de datos sin necesidad de tener una conexin abierta con el origen de datos, lo que libera la conexin para que la utilicen otros clientes. Si no necesita la funcionalidad proporcionada por el DataSet, puede mejorar el rendimiento de su aplicacin si utiliza el DataReader para devolver sus datos de slo avance y de slo lectura. Aunque el DataAdapter utiliza el DataReaderpara rellenar el contenido de un DataSet (vea Llenar un DataSet desde un DataAdapter), al utilizar el DataReaderpuede mejorar el rendimiento porque no usar la memoria que utilizara el DataSet, adems de evitar el procesamiento necesario para crear y rellenar el contenido de DataSet.

Modelo Vista Controlador

Un diagrama sencillo que muestra la relacin entre el modelo, la vista y el controlador. Nota: las lneas slidas indican una asociacin directa, y las punteadas una indirecta (por ejemplo, patrn Observer).

Modelo Vista Controlador (MVC) es un patrn de arquitectura de software que separa los datos de una aplicacin, la interfaz de usuario, y la lgica de negocio en tres componentes distintos. El patrn de llamada y retorno MVC (segn CMU), se ve frecuentemente en aplicaciones web, donde la vista es la pgina HTML y el cdigo que provee de datos dinmicos a la pgina. El modelo es el Sistema de Gestin de Base de Datos y la Lgica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.
Contenido

1 Historia 2 Descripcin del patrn 3 Frameworks MVC 4 Vase tambin 5 Referencias 6 Enlaces externos

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Historia
El estilo fue descrito por primera vez en 19791 por Trygve Reenskaug, entonces trabajando en Smalltalk en laboratorios de investigacin deXerox. La implementacin original est descrita en Programacin de Aplicaciones en Smalltalk-80(TM): Como utilizar Modelo Vista Controlador.2

Descripcin del patrn

Modelo: Esta es la representacin especfica de la informacin con la cual el sistema opera. En resumen, el modelo se limita a lo relativo de la vista y su controlador facilitando las presentaciones visuales complejas. El sistema tambin puede operar con ms datos no relativos a la presentacin, haciendo uso integrado de otras lgicas de negocio y de datos afines con el sistema modelado.

Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente

la interfaz de usuario. Controlador: Este responde a eventos, usualmente acciones del usuario, e invoca

peticiones al modelo y, probablemente, a la vista. Muchos de los sistemas informticos utilizan un Sistema de Gestin de Base de Datos para gestionar los datos: en lneas generales delMVC corresponde al modelo. La unin entre capa de presentacin y capa de negocio conocido en el paradigma de la Programacin por capas representara la integracin entre Vista y su correspondiente Controlador de eventos y acceso a datos, MVC no pretende discriminar entre capa de negocio y capa de presentacin pero si pretende separar la capa visual grfica de su correspondiente programacin y acceso a datos, algo que mejora el desarrollo y mantenimiento de la Vista y el Controlador en paralelo, ya que ambos cumplen ciclos de vida muy distintos entre s. Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo que sigue el control generalmente es el siguiente: 1.El usuario interacta con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botn, enlace, etc.)

2.El controlador recibe (por parte de los objetos de la interfaz-vista) la notificacin de la accin
solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a travs de un gestor de eventos (handler) o callback.

3.El controlador accede al modelo, actualizndolo, posiblemente modificndolo de forma adecuada


a la accin solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos estn a menudo estructurados usando un patrn de comando que encapsula las acciones y simplifica su extensin.

4.El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista
obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se reflejan los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, se podra utilizar el

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

patrn Observador para proveer cierta indireccin entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun as el modelo en s mismo sigue sin saber nada de la vista. Este uso del patrn Observador no es posible en las aplicaciones Web puesto que las clases de la vista estn desconectadas del modelo y del controlador. En general el controlador no pasa objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para que se actualice. Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador enve los datos del modelo a la vista. Por ejemplo en el MVC usado por Apple en su framework Cocoa. Suele citarse como Modelo-Interface-Control, una variacin del MVC ms puro 5.La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

A. HABILITANDO EL USUARIO SA E INICIO DE SESION CON AUTENTICACIN DE SQL SERVER

1. Inicio + Todos los Programas + SQLMicrosoft SQL Server 2008 + SQL Server Management Studio.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

2. Anticlick + Ejecutar como administrador

3. Loguearnos con la instancia por defecto. Si usas una versin diferente del SQL Express reemplaza el .\sqlexpress por el usuario que definiste a la hora de instalar tu MS SQL.

4. Conocemos la interfaz de Administracin del SQL.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

5. Buscamos al Administrador (SA).

6. Anticlic + Propiedades

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

7. Nos ubicamos en la pgina General.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

8. Escribimos la contrasea que vamos a utilizar.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

9. Nos ubicamos en la pgina Estado.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

10.Habilitamos el Inicio de Sesin + Aceptar.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

11.Actualizamos.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

12.Vemos que el usuario administrador sa est habilitado.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

13.Anticlic + Propiedades.

14.Nos ubicamos en la pgina Seguridad.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

15.Habilitamos Modo de autenticacin de Windows y SQL Server para poder loguearnos con los usuarios que administramos en nuestro servidor como el usuario sa.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

16.Clic en Aceptar.

17.Anticlic en la raz + Reiniciar.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

18.Clic en S.

19.Archivo + Desconectar Explorador de objetos.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

20.Estamos Desconectados.

21.Archivo + Conectar Explorador de Objetos.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

22.Nos logueamos, pero esta vez Escogemos Autenticacin de SQL Server.

23.Probamos nuestro usuario sa que hemos habilitado. Clic en Conectar.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

24.Estamos logueados con nuestro usuario sa.

A. CREANDO OTRO USUARIO SI DESEAMOS

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

1. Si quisiramos crear un nuevo usuario diferente al sa basta con hacer anticlic en Inicios de Sesin.

2. Elegimos Nuevo Inicio de Sesin.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

3. Elegimos el nombre de nuestro usuario por ejemplo pepito y repetimos los pasos 7 al 24, slo que en lugar del usuario sa usamos el que hemos creado con su respectiva contrasea.

4. Clic en Nueva Consulta.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

A. CREANDO NUESTRA BASE DE DATOS INSTITUTO, TABLAS Y DATOS

1. Pegamos el Siguiente Script para ahorrarnos el trabajo de crear la Base de Datos, Tablas e ingresar los datos:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

--Juan Marcelo Chamorro Avendao

--E-Mail: jmarcelo_data@hotmail.com

--Creando la BAse de Datos Alumnos

CREATE DATABASE Instituto

GO

--Creando la Tabla Alumnos

USE Instituto

GO

CREATE TABLE Alumnos

(CodAlumno char(4) PRIMARY KEY NOT NULL,

Nombre VarChar(50) NOT NULL,

Apellidos VarChar(50) NOT NULL,

Especialidad VarChar(50) NOT NULL,

Curso VarChar(50) NOT NULL,

Turno VarChar(50) NOT NULL, "Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

2. Ejecutar el Script.

3. Nuestro Script est ejecutado y la Base de Datos con la que vamos a trabajar ha sido creada.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

4. Actualizar.

5. Al expandir vemos Nuestra Base de Datos Instituto creada.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

6. Vemos que hay dos tablas que han sido creadas por el script.

7. Anticlic en la tabla Alumnos + Editar las 200 primeras filas.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

8. Vemos que el Script ya ha creado todos los datos.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

9. Anticlic en la Tabla Password + Editar las primeras 200 filas.

10.Vemos que el script ya ha creado contenido.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

A. CREANDO LAS CAPAS DE PRESENTACIN, NEGOCIOS Y DATOS: CREANDO LA CAPA DE PRESENTACIN INSTITUTO

1. Iniciamos el Visual Studio 2010 en Modo Administrador.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

2. Archivo + Nuevo Proyecto.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

3. Creamos una Aplicacin de Windows Form llamada Instituto + Aceptar.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

A. CREANDO EL FORMULARIO MDI CONTENEDOR (PADRE)

1. Le damos las siguientes propiedades al Form1. Propiedad Text Valor frmMain

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

WindowState IsMdiContain

Maximized True

2. Le agregamos un Control MenuStrip (Arrastrar o hacer doble clic).

3. La propiedad IsMdiContain con su valor true la ha convertido en una ventana contenedora.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

4. Vamos a agregar la ventana de logueo ahora. Anticlic en la raz Instituto + Agregar + Windows Forms.

5. Le ponemos de nombre frmLogin.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

6. Configuramos el form frmLogin como ventana de inicio. Proyecto + Propiedades de Instituto.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

7. Seleccionamos frmLogin. Con esto cuando ejecutemos el proyecto la ventana frmLogin ser la primera en aparecer.

A. CREANDO LAS CAPAS DE PRESENTACIN, NEGOCIOS Y DATOS: CREANDO LA CAPA DE NEGOCIOS NEGOCIO

1. Agregar Nuevo Proyecto. Archivo + Agregar + Nuevo Proyecto.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

2. Seleccionamos Biblioteca de Clases. La llamamos NEGOCIO + ACEPTAR.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

El Explorador de Soluciones se vera as:

Cambiar el Nombre de la Clase por defecto a N_Login.vb, para eso seleccionamos la clase y en Propiedades modificar: Nombre de Archivo: N_Login.vb CREANDO LAS CAPAS DE PRESENTACIN, NEGOCIOS Y DATOS: CREANDO LA CAPA DE DATOS DATOS

3. Se crea una Solucin automticamente. Anticlic en la Solucin + Agregar + Nuevo proyecto.

Igual que en el paso 50 pero esta vez llamarlo DATOS.

Cambiar el Nombre de la Clase por defecto a D_Login.vb, para eso seleccionamos la clase y en Propiedades modificar: Nombre de Archivo: D_Login.vb

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

4. Finalmente nuestra solucin se ve as.

A. CREAMOS EL PROCEDIMIENTO ALMACENADO login Que Ser Gestionado Desde La Aplicacin.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

1. Creamos un Procedimiento Almacenado al que vamos a llamar login. En el Administrador de SQL elegir Nueva Consulta, ah crearemos el siguiente Procedimiento Almacenado.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

CREATE PROCEDURE login @Usuario VARCHAR(50), @Password VARCHAR(50), @Res VARCHAR(40) OUTPUT AS BEGIN DECLARE @NUM AS int SELECT @NUM = COUNT(*) FROM Password WHERE Usuario=@Usuario

IF @NUM=1 BEGIN SELECT @NUM = COUNT(*) FROM Password WHERE Password=@Password

IF @NUM=1 BEGIN SET @Res='Acceso Permitido.' END ELSE BEGIN SET @Res='Clave Incorrecta.' END END ELSE BEGIN SET @Res='Usuario No Existe.' END END GO "Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

2. Ejecutar la Consulta para crear el Procedimiento Almacenado.

3. Si todo ha sido correcto el administrador de SQL nos devuelve el mensaje Comandos Completados Correctamente.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

A. CREAMOS UN ARCHIVO DE CONFIGURACIN APP.CONFIG QUE ALMACENAR LOS PARMETROS DE NUESTRA CADENA DE CONEXIN

1. En el Visual Studio Agregaremos un Archivo de configuracin conteniendo la Cadena de Conexin a la Base de Datos instituto. Anticlic en Instituto + Agregar + Nuevo Elemento.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

2. En Elementos Comunes Seleccionamos General y escogemos Archivo de Configracin. Dejamos el nombre por defecto app.config + Agregar.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

3. Dentro de <Configuration> </Configuration> colocamos la configuracin de nuestra cadena de conexin usando la propiedad <appSettings>.
<appSettings> <add key="cn" value="Server=.\sqlexpress; DataBase=Instituto; User=sa; Password=123456;" /> </appSettings>

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

4. Finalmente Tenemos nuestra solucin as:

A. REFERENCIAMOS LAS CAPAS

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

1. Referenciamos la CAPA NEGOCIO A LA CAPA DATOS. Anticlic en NEGOCIO + Agregar Referencia.

2. Seleccionamos la CAPA DATOS + ACEPTAR.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

3. Seleccionamos la Capa de Aplicacin Instituto + Anticlic + Agregar Referencia. Para referenciarla a la Capa NEGOCIO.

4. SELECCIONAMOS LA CAPA NEGOCIO + ACEPTAR.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

A. CREAMOS LAS CLASES NECESARIAS EN LAS CAPA DE DATOS Y NEGOCIOS CON SUS MTODOS RESPECTIVOS, LAS INTERFACES QUE LAS VAN A GESTIONAR Y LOS PROCEDIMIENTOS ALMACENADOS A SER GESTIONADOS POR LA CAPA DE DATOS

1. Codificar la clase D_Login como se indica:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Imports System.Data Imports System.Data.SqlClient Imports System.Configuration

Public Class D_Login

Private Function Conexion() As SqlConnection Dim strConn As String Dim ConfAppSet As New AppSettingsReader

strConn = CStr(ConfAppSet.GetValue("cn", GetType(String)))

Dim ConexionDB As New SqlConnection(strConn)

ConexionDB.Open()

Return ConexionDB End Function

Public Function BuscarUsuarioD(ByVal usu As String, ByVal clav As String) As String Dim cmd As New SqlCommand cmd.CommandText = "login" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = Conexion() cmd.Parameters.Add("@Usuario", SqlDbType.VarChar, 50).Value = usu cmd.Parameters.Add("@Password", SqlDbType.VarChar, 50).Value = clav cmd.Parameters.Add("@Res", SqlDbType.VarChar, 40).Direction = ParameterDirection.Output

cmd.ExecuteNonQuery()

Return cmd.Parameters("@Res").Value

"Porque el secreto del desarrollo de una nacin est en su educacin"

End Function

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

2. Codificar la Clase N_Login como se indica:


Imports DATOS

Public Class N_Login Public Function BuscaUsuarioN(ByVal usuN As String, ByVal clavN As String) As String Dim clsLogin As New D_login

Return clsLogin.BuscarUsuarioD(usuN, clavN) End Function End Class

3. Disear el frmLogin como se indica:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

4. Agregar el Men Mantenimiento y dentro el SubMen Alumnos.

5. Agregamos nuestro formulario de Mantenimiento frmAlumnos dentro de la capa de presentacin Instituto.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

6. Disear como se indica.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

7. Dentro del cdigo del formulario frmAlumnos agrego el mtodo constructor Sub New(), una instancia frmInstance y una funcin Instance() como se ve en el cuadro y la imagen:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Public Class frmAlumnos

Private Sub New()

' Llamada necesaria para el diseador. InitializeComponent()

' Agregue cualquier inicializacin despus de la llamada a InitializeComponent().

End Sub

Private Shared frmInstance As frmAlumnos = Nothing

Public Shared Function Instance() As frmAlumnos If frmInstance Is Nothing OrElse frmInstance.IsDisposed = True Then frmInstance = New frmAlumnos End If frmInstance.BringToFront() Return frmInstance End Function End Class

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Con esto logramos que se inicie una sola instancia de nuestro formulario hijo. 8. Doble clic en el submenu Alumnos para generar su cdigo:

9. Agregarle el siguiente cdigo:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Dim Alumnos As frmAlumnos = frmAlumnos.Instance Alumnos.MdiParent = Me Alumnos.Show()

10.En el SQL Server Management abrimos una Nueva Consulta y creamos otro procedimiento Almacenado similar al paso 53:
CREATE PROCEDURE listarAlumnos AS BEGIN SELECT * FROM Alumnos END GO

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

11.Ejecutamos la consulta para crear el procedimiento almacenado listarAlumnos.

12.Agregamos una nueva clase dentro de la Capa DATOS llamada D_Listar. La codificamos como se indica:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Imports System.Data Imports System.Data.SqlClient Imports System.Configuration

Public Class D_Listar Private Function Conexion() As SqlConnection Dim strConn As String Dim ConfAppSet As New AppSettingsReader

strConn = CStr(ConfAppSet.GetValue("cn", GetType(String)))

Dim ConexionDB As New SqlConnection(strConn)

ConexionDB.Open()

Return ConexionDB End Function

Public Function ListarD() As DataSet Dim cmd As New SqlCommand cmd.CommandText = "listarAlumnos" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = Conexion()

Dim DA As New SqlDataAdapter Dim DS As New DataSet

DA.SelectCommand = cmd DA.Fill(DS)

Return DS End Function

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

13.Agregamos una nueva clase dentro de la capa NEGOCIO llamada N_Listar y la codificamos como se indica:
Imports DATOS

Public Class N_Listar Public Function ListarN() As DataSet Dim clsLogin As New D_Listar

Return clsLogin.ListarD End Function End Class

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

14.Creamos el procedimiento almacenado InsertarAlumno:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

CREATE PROCEDURE InsertarAlumno @CodAlumno CHAR(4), @Nombre VARCHAR(50), @Apellidos VARCHAR(50), @Especialidad VARCHAR(50), @Curso VARCHAR(50), @Turno VARCHAR(50), @Nota VARCHAR(50)

AS BEGIN INSERT INTO Alumnos VALUES ( @CodAlumno, @Nombre, @Apellidos, @Especialidad, @Curso, @Turno, @Nota ) END GO

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

15.Renombramos las cajas de texto como se indica en la figura:

16.Agregamos una nueva clase dentro de la capa DATOS llamada D_Insertary la codificamos como se indica:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Imports System.Data Imports System.Data.SqlClient Imports System.Configuration

Public Class D_Insertar Private Function Conexion() As SqlConnection Dim strConn As String Dim ConfAppSet As New AppSettingsReader

strConn = CStr(ConfAppSet.GetValue("cn", GetType(String)))

Dim ConexionDB As New SqlConnection(strConn)

ConexionDB.Open()

Return ConexionDB End Function

Public Function InsertarD(ByVal CodAlumno As String, ByVal Nombre As String, ByVal Apellidos As String, ByVal Especialidad As String, ByVal Curso As String, ByVal Turno As String, ByVal Nota As Integer) As Integer Dim cmd As New SqlCommand cmd.CommandText = "InsertarAlumno" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = Conexion()

cmd.Parameters.Add("@CodAlumno", SqlDbType.Char, 4).Value = CodAlumno cmd.Parameters.Add("@Nombre", SqlDbType.VarChar, 50).Value = Nombre cmd.Parameters.Add("@Apellidos", SqlDbType.VarChar, 50).Value = Apellidos cmd.Parameters.Add("@Especialidad", SqlDbType.VarChar, 50).Value = Apellidos cmd.Parameters.Add("@Curso", SqlDbType.VarChar, 50).Value = Curso cmd.Parameters.Add("@Turno", SqlDbType.VarChar, 50).Value = Turno cmd.Parameters.Add("@Nota", SqlDbType.Int).Value = Nota

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

17.Agregamos una nueva clase dentro de la capa NEGOCIO llamada N_Insertar y la codificamos como se indica:
Imports DATOS

Public Class N_Insertar Public Function InsertarN(ByVal CodAlumno As String, ByVal Nombre As String, ByVal Apellidos As String, ByVal Especialidad As String, ByVal Curso As String, ByVal Turno As String, ByVal Nota As Integer) As Integer Dim clsLogin As New D_Insertar

Return clsLogin.InsertarD(CodAlumno, Nombre, Apellidos, Especialidad, Curso, Turno, Nota) End Function End Class

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

18.Codificamos el evento Load del formulario frmAlumnos para que cargue los datos al iniciarse en el DataGridView1:

Private Sub frmAlumnos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim clsNegocio As New NEGOCIO.N_Listar DataGridView1.DataSource = clsNegocio.ListarN.Tables(0) End Sub

Y codificamos el botn btnInsertar del formulario frmAlumnos:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Private Sub btnInsertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsertar.Click Dim clsNegocio As New NEGOCIO.N_Insertar Dim clsNegocio01 As New NEGOCIO.N_Listar

clsNegocio.InsertarN(txtCodAlumno.Text, txtNombre.Text, txtApellidos.Text, txtEspecialidad.Text, txtCurso.Text, txtTurno.Text, CInt(txtNota.Text)) DataGridView1.DataSource = clsNegocio01.ListarN.Tables(0) End Sub

19.Al ejecutar e insertar un Nuevo item se vera as:

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Se deja como trabajo utilizando todo lo aprendido implementar las interfaces y clases necesarias para que funcionen los botones Modificar y Eliminar.

"Porque el secreto del desarrollo de una nacin est en su educacin"

Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com

Adems filtrar la aplicacin para mostrar a los alumnos por Cdigo, Nombre, Apellidos, Especialidad, Curso, Turno o Nota. Implementar un ejemplo de bsqueda por Cdigo, Nombre, Apellidos, Especialidad, Curso, Turno o Nota. Encriptar la Cadena de Conexin (Opcional). Investigar y generar un reporte para imprimir (Opcional).

"Porque el secreto del desarrollo de una nacin est en su educacin"

You might also like