Professional Documents
Culture Documents
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
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).
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
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
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
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.
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
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
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.
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.
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
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.
1. Inicio + Todos los Programas + SQLMicrosoft SQL Server 2008 + SQL Server Management Studio.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
6. Anticlic + Propiedades
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
11.Actualizamos.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
13.Anticlic + Propiedades.
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.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
16.Clic en Aceptar.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
18.Clic en S.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
20.Estamos Desconectados.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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.
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.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
1. Pegamos el Siguiente Script para ahorrarnos el trabajo de crear la Base de Datos, Tablas e ingresar los datos:
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
--E-Mail: jmarcelo_data@hotmail.com
GO
USE Instituto
GO
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.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
4. Actualizar.
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.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
WindowState IsMdiContain
Maximized True
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.
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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
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
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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.
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 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
3. Si todo ha sido correcto el administrador de SQL nos devuelve el mensaje Comandos Completados Correctamente.
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.
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.
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>
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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.
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
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Private Function Conexion() As SqlConnection Dim strConn As String Dim ConfAppSet As New AppSettingsReader
ConexionDB.Open()
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
End Function
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Public Class N_Login Public Function BuscaUsuarioN(ByVal usuN As String, ByVal clavN As String) As String Dim clsLogin As New D_login
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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:
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
End Sub
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
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:
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
12.Agregamos una nueva clase dentro de la Capa DATOS llamada D_Listar. La codificamos como se indica:
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Public Class D_Listar Private Function Conexion() As SqlConnection Dim strConn As String Dim ConfAppSet As New AppSettingsReader
ConexionDB.Open()
Public Function ListarD() As DataSet Dim cmd As New SqlCommand cmd.CommandText = "listarAlumnos" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = Conexion()
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
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
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
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
16.Agregamos una nueva clase dentro de la capa DATOS llamada D_Insertary la codificamos como se indica:
Autor: Juan Marcelo Chamorro Avendao E-mail: jmarcelo_data@hotmail.com Blog Personal: http://marcelodata.blogspot.com
Public Class D_Insertar Private Function Conexion() As SqlConnection Dim strConn As String Dim ConfAppSet As New AppSettingsReader
ConexionDB.Open()
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
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
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
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
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.
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).