Ciclo 02/2013 UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION GUÍA DE LABORATORIO #11 Nombre de la Práctica: ADO.NET y conexiones a Base de Datos. Parte III Lugar de ejecución: Centro de computo Tiempo estimado: 2 horas con 30 minutos MATERIA: Lenguaje de Programación I I. OBJETIVOS Qué el estudiante: Implemente acceso de tipo conectado y desconectado a una Base de Datos de Microsoft SQL Server Utilice la jerarquía de objetos brindados por el Proveedor SqlClient, incluido en ADO.NET. Implemente el principio de Encapsulamiento de objetos dedicados a tareas específicas. Utilice apropiadamente al contenedor de datos DataSet al acceder a SQL Server de manera no conectada. Diseñe aplicaciones con interfaces de documentos multiples (MDI) II. INTRODUCCIÓN TEÓRICA. Cuándo utilizar un DataSet o un DataReader para acceder a un Origen de Datos? Los objetos DataSet son objetos complejos que nos permiten almacenar múltiples tablas de datos DataTables desde una fuente de datos. Un objeto DataSet es como una base de datos virtual ubicada dentro de una aplicación Cliente / Web. Los objetos DataSet también pueden contener relaciones entre los datos de las DataTables, y pueden utilizar esas relaciones para recuperar datos. Los objetos DataReader son objetos ligeros que se utilizan para leer datos desde una fuente de datos; los objetos DataReader proporcionan acceso sólo hacia delante (forward-only) y de sólo lectura (read-only) a los datos de una base de datos. La elección entre utilizar objetos DataSet u objetos DataReader debería basarse en el uso previsto para los datos. Normalmente, los objetos DataReader se utilizan para leer datos en situaciones en las que es necesario el acceso una única vez, y de solo lectura, como cuando accedemos a una contraseña almacenada, o se complementa las respuestas mostradas en un control enlazado a una lista. Los objetos DataSet se utilizan para un acceso a datos más complejo, como el acceso a todo el historial de pedidos de un cliente. Algunos de los aspectos relativos al acceso a datos que se deben tener en cuenta a la hora de decidir entre objetos DataSet y DataReader incluyen: Acceso a datos
Si nuestra intención es leer y escribir a nuestra fuente de datos, debemos utilizar un objeto DataSet. Los objetos DataReader son conexiones de sólo lectura y deberían utilizarse únicamente cuando los datos vayan a utilizarse en una situación de sólo lectura. Acceso a múltiples bases de datos Si nuestra intención es combinar tablas de una o más bases de datos, debemos utilizar un objeto DataSet. Los objetos DataReader se basan en una única instrucción SQL de una sola base de datos. Enlace a controles Si nuestra intención es enlazar los datos a más de un control, debemos utilizar un objeto DataSet. Los objetos DataReader sólo pueden vincularse a un único control. Modo conexión Si nuestra intención es trabajar en un modo desconectado, debemos utilizar un objeto DataSet. Los objetos DataReader deben ejecutarse en modo conectado. Búsqueda (scanning) de datos Si nuestra intención es buscar los datos hacia atrás y hacia delante, debemos utilizar un objeto DataSet. Los objetos DataReader buscan hacia adelante a medida que los datos fluyen desde la base de datos. Velocidad de acceso Si necesitamos acceso de alta velocidad a nuestra fuente de datos, utilizaremos un objeto DataReader. Los objetos DataSet son más lentos que los objetos DataReader en el acceso a una base de datos, debido a que los objetos DataSet almacenan los datos en un objeto del servidor Web. También la sobrecarga es mayor en la creación del objeto DataSet debido a la capacidad de leer y escribir datos y búsqueda hacia delante y hacia atrás. Los objetos DataReader son más rápidos debido a la naturaleza del objeto más ligera. Hay muy poca sobrecarga para el objeto DataReader, ya que éste trabaja sólo hacia delante y sólo de lectura. Soporte de herramientas Si nuestra intención es utilizar Microsoft Visual Studio.NET para crear la conexión a datos, utilizaremos objeto DataSet. Con los objetos DataSet, podemos elegir entre escribir nuestro propio código o utilizar el código máquina de Visual Studio.NET. Con los objetos DataReader, debemos escribir todo el código de soporte. III. REQUERIMIENTOS DE EQUIPO. No. Requerimiento Cantidad 1 Guía de Laboratorio #11 de LP1 1 2 PC con Microsoft Visual Studio 2010.NET instalado y acceso a Servidor SQL Server 2010 3 Recursos complementarios (script de BDD a utilizar) 1 4 Memoria USB 1 1 IV. PROCEDIMIENTO. 2
PARTE 1: Creación de BDD en SQL Server 2010 1. Antes de iniciar, es necesario que solicite a su instructor los parámetros de conexión de su servidor SQL a utilizar: Identificación del Server: Nombre Instancia Servidor (*): IP: Puerto: (*): Por lo general, su valor es (local) Cuenta usuario disponible para acceder a ServerSQL + Cuenta: + Contraseña: Figura 1: Tabla de parámetros del servidor SQL server a utilizar 2. Abra el archivo de script de sql adjunto (SQLcreacionBDD_EmpresaPlazaLibre.sql) a la practica 11. 3. Ingrese a SQL Server, dando clic en menu inicio de Windows, luego en "Todos los programas/ Microsoft SQL Server 2008 R2/ SQL Server Management Studio". 4. Identifiquese con el usuario-contrasena brindados por su instructor (ver tabla de Figura 1). 5. Localice la ventana del explorador de objetos (Object Explorer, mostrada en la Figura 2) Figura 2: Ubicación de la ventana del Explorador de objetos (Object Explorer) 6. De clic secundario en la carpeta Databases y seleccione opción New DataBase... 7. En la ventana (New Database), digite en la opción "database name:" al nombre base datos: EmpresaPlazaLibre. Como propietario (Owner) digite el nombre de cuenta de usuario con la cual ingreso a SQL server y finalmente, presione botón Aceptar/Ok en el inferior de esta ventana. 8. De clic secundario sobre Carpeta Databases del Explorador de objetos y seleccione Actualizar. Localice la nueva base de datos llamada EmpresaPlazaLibre. 9. Ahora de clic en opción (New Query) y copie el contenido del archivo (SQLcreacionBDD_EmpresaPlazaLibre.sql) hacia la ventana de edición de sentencias de la nueva query en SQL Server. 10. Presione el botón "Execute Query" y confirme que las sentencias se ejecutaron apropiadamente. 3
PARTE 2: Creación de Clase para acceso a SQL Server 2010 11. Inicie a Visual Studio.NET y prepare una nueva aplicación Windows. 12. Guarde su proyecto de solución como LP1procedimientoGuia11. Además, guarde el nuevo módulo del form como frmprincipal.vb. 13. En el form frmprincipal, modifique a su propiedad IsMdiContainer a True. Esto permitirá que form frmprincipal sea un form de interfaz de documento multiple (MDI), para contener en su interior a otros formularios. 14. Localice en la (Barra de herramientas/tool Box) a la categoría de controles Menus & Toolbars, para seleccionar de ahí a un control MenuStrip. Luego de clic en el área central del form. Se agregara una barra de menús principal MenuStrip1 vacía en la parte superior de la ventana del form. 15. Proceda a crear la siguiente estructura de opciones del menú principal que utilizara su frmprincipal, mostrada en Figura 3, dando clic en combo Type Here (a la izquierda de la barra menú vacía) y escribiendo las opciones. Figura 3: Estructura de opciones de menú para el menú de ventana MDI principal 16. De clic sobre la opción Abrir Conexion, y luego en la ventana de propiedades, modifique la propiedad name de acuerdo a esta sugerencia: Mismo texto mostrado, pero sin espacios en blanco, y antecedido por letras mnu, por ejemplo: mnuabrirconexion. 17. Repita paso anterior para cada una de las opciones ya agregadas a la barra de menús 18. Guarde su proyecto solución hasta ahora. 19. Agregue un nuevo módulo de clase, y guárdelo bajo el nombre ClsAccesoBDD. Esta clase tendrá encapsulada la información y métodos necesarios para acceder a un Server SQL y a una BDD, con permisos de acceso (según una cuenta-usuario brindada por administrador). 20. Dentro del módulo de la nueva clase, proceda a digitar el código siguiente: 4
5 Facultad de Estudios Tecnologicos
6 Facultad de Estudios Tecnologicos
7 Facultad de Estudios Tecnologicos
21. Para utilizar esta clase, agregue un módulo de variables (con el nombre predeterminado Module1.vb) y luego agregue ahí a un objeto de la clase ClsAcceso o denominado Enlace, asi: 22. Retorne al form frmprincipal y digite los siguientes código: 8
23. Proceda a agregar un nuevo form a su aplicación, guardándolo bajo el nombre de frmlistartablas.vb. Modifique su propiedad name a frmlistartablas. Luego ubique los siguientes controles a este form: Figura 4: Diseño de formulario frmlistartablas.vb 24. A continuación, modifique las siguientes propiedades de este form y sus controles: Control propiedad Valor frmlistartablas maximizebox False minimizebox False ShowInTaskbar False StartPosition CenterScreen FormBorderStyle FixedSingle Text Acceso conectado a la BDD: Label1 Text Listado de tablas de su BDD: Button1 Text Ver lista tablas 25. Guarde su proyecto, compílelo y ejecútelo. Seleccione opción Inicio / Abrir Conexion 26. Si la conexión se logró, vera un mensaje de Conexión exitosa a bdd EmpresaPlazaLibre. En caso contrario, determine las causas del problema!! 27. Si la conexión se logró con éxito digite el siguiente código en el formulario frmlistartablas: 9
PARTE 3: Acceso conectado a una BDD 28. Guarde los cambios y recompile su proyecto. Intente dar clic en mnulistarnombresdetablas. Funciono el acceso conectado a SQL Server? 29. Seleccione opción Inicio / Abrir Conexión y luego de clic en Listar nombres de tablas. Logro cargar el form anterior? 30. Retorne al modo de diseño del proyecto. PARTE 4: Acceso desconectado a una BDD 31. Agregue un nuevo form a su proyecto, bajo el nombre de: frmverregistros.vb Control propiedad Valor ListBox1 Label1 Text Registro de la tabla DataGridView1 32. Agregue los siguientes códigos de procedimientos dentro de este form frmverregistros.vb:. 33. Presione cada nombre de tabla mostrado en listbox1 y los registros de tabla seleccionada se verán en el DataGridView1. Pero lo más importante.. Por c/nueva selección, se copiando bloques de registros en objetos DataTable diferentes en el DataSet de almacenamiento, al cual, el DataGridView se le enlaza para reflejar los datos actualmente almacenados!! 34. Agregue un nuevo form a su proyecto, bajo el nombre de: frmediciondesconectada.vb. 10
35. En tabpage1 agregar un label y una datagriview. 36. En tabpage2 agregar los siguientes elementos. Figura 6: Diseño de formulario frmediciondesconectada.vb Control Name Control Name Textbox1 txtproductip Textbox5 txtquantityperunit Textbox2 txtproductname Textbox6 txtunitprice Textbox3 txtsupplierid Textbox7 txtunitsinstock Textbox4 txtcategoryid Textbox8 txtunitsonorder 37. Modifique el texto (propiedad Text) mostrado en cada uno, según estas reglas. + Todas las cajas de texto vacias. + Botones: Boton2: PRIMERO, Boton1: ANTERIOR, Boton3: SIGUIENTE y Boton4: ULTIMO 11
Boton6: Permir edicion, Boton7: Finalizar Edicion 38. A continuación, se indica el código que define a los procedimientos normales y de evento definidos para este form. 12
39. Compile y ejecute el proyecto. Inicie una conexión con SQL y luego seleccione opción Desconectado/ Interactuar con DataSet. 40. Use los botones de desplazamiento (siguiente, anterior, primero, segundo) para moverse entre los registros, los cuales están guardados en un DataSet (y sin conexión con la BDD en ese momento). 41. Ubíquese en el 2do registro y presione botón de Permitir Edición. Modifique el texto del campo ProductName y el total de productos indicado en campo UnitsInStock. 42. Luego de clic Botón Finalizar Edición. Responda No a la pregunta y observe que registro modificado se restaura a valores originales. 43. Repita los últimos 2 pasos, pero esta vez, responda Si a pregunta y luego cierre este form. Ingrese al menú Desconectado / Cargar Registros en DataSet. Localice los registros alterados en paso anterior si conservan los cambios hechos por usted. Reinicie la ejecución de la aplicación. Abra la conexión e ingrese al form de la opción Desconectado / Cargar Registros en DataSet. Localice tabla Products y los registros que altero previamente. Se modificaron los registros en el origen de datos SQL Server? PARTE 6: Trasladando cambios de datos en DataSet al Origen de datos 44. Recompile la aplicación. Inicie conexión con SQL, modifique 3 registros (campos nombre, precio unitario y unidades en bodega). Responda Si a la pregunta sobre actualizar c/producto. 13
45. Ahora sí, presione la última opción del menú Desconectado / Actualizar BDD y responda SI a la pregunta sobre si trasladar cambios a la BDD!! 46. Reinicie la aplicación y observe el contenido de registros de la tabla Products. Vera que los campos de los registros que usted modifico, si fueron modificados V. ANALISIS DE RESULTADOS. + Agregue el código necesario para permitir agregar un nuevo producto a los ya existentes en el DataSetPrincipal, manteniendo el encapsulamiento implementado por la clase ClsAccesoBDD. 14