De nuevo regresa a mi la materia de Estructura de Datos con su nuevo
nombre, se le agrega la palabra aplicadas que parece muy adecuado.
Ahora
desde casa se me ocurren mil cosas e ideas que haber hasta donde me
alcanza la vida y el entendimiento, pero una de ellas es darla con
varios lenguajes; en ocasiones pasadas la llegué a impartir con Java
y C#.
En
esta ocasión los chicos no quisieron complicarse y supongo con la
experiencia de su maestro Mario Villavicencio han decidido con C#.
Como
sabemos Javascript ha tenido un dominio avasallador y
es el gran protagonista del desarrollo web, entonces para el primer
tema que son tipos de datos abstractos probamos las clases en
Javascript.
El
ejemplo fue la clase Cuadrilatero (y sólo el subconjunto de
aquellas figuras que sus ángulos interiores son rectos es decir el
rectángulo y el cuadrado), y pues para evitar el dibujar en la
consola decidí probar el objeto canvas manipulado por
Javascript.
El
primer paso fue hacer un formulario donde iba a obtener del usuario,
la altura y anchura del cuadrilátero, después para ir probando fui
agregando botones para probar cada acción de la clase. La versión
definitiva fue darle mejor presentación agregando Bootstrap 4
y un botón para obtener de una sola vez la creación del objeto, el
área, el perímetro y la imagen de la figura, les muestro el
prototipo final de la página web, que publiqué en un sitio gratuito
de internet.
Les dije: investiguen, intenten, lean, busquen caminos alternativos,
y aun al día de hoy, tenemos personas que no pudieron instalar
Oracle y siguen batallando, o bien se fueron por otro motor de base
de datos.
Como Ingenieros en TICs deben de agotar todas las opciones, y sin
ofender instalar el software n veces, pudiera ser una
solución, pero no es la única.
Hoy en 10 minutos, quizás 15 instalé en un Windows Server 2003, la versión 11g de Oracle Express Edition. Sí, muchos dirán pero usted es el maestro, o quizás nuestro equipo no de para máquinas virtuales, pero hay equipos en la universidad o sus compañeros pueden fungir como su servidor, en fin tenemos que buscar opciones más allá de instalar un software “más fácil”. Y no estoy enojado, pero quisiera ver más iniciativa, y claro esta observación no es para todos, por supuesto.
Y seguimos con las tensiones mundiales a todo lo que da, este año
iniciábamos con una posible guerra mundial y ahora tenemos una
pandemia en curso (afortunadamente aunque el contagio es severo, el
índice de mortandad – número de casos contra muertes es muy bajo
por ahora).
Pero la vida tiene
que seguir así que, a lo nuestro.
Una
de las prácticas para base de datos en el tema de transacciones, es
la de generación de datos aleatorios para alimentar una tabla de una
base de datos de Oracle para un grupo y de MySQL para otro (donde en
el caso de Oracle escribí hace algunos años un artículo sobre
números aleatorios [1]).
En
el grupo A, los jóvenes no pudieron mandar llamar un procedimiento
almacenado (que es el que genera los datos aleatorios), por lo que
tuvieron que correr los bloques de programación por separado.
Entonces…soy
el profesor …jejeje …pues fuimos a la biblioteca gigante del
Internet para buscar una solución y me encontré lo siguiente, en
este post [2].
La vida implica cambios y por más comodos que muchas veces estamos, la vida cambia, todo cambia.
Por ejemplo esta máquina desde donde ahora escribo, ha sido complice inanimada de mis tutoriales, videos, artículos, reflexiones y demás “diarreas mentales” que escribo en los diferentes espacios virtuales donde habitan mis ideas.
Pues bien, estamos a punto de jubilarla, pero no sin antes rendirle todos mis honores por ser mi herramienta complice para tratar de generar y compartir conocimiento.
Al igual que yo. Aun vivo una etapa de incertidumbre la cual no se despeja, sin embargo, parece inminente, mi ausencia temporal o bien definitiva de mi quehacer docente, lo cual es algo muy complicado…pero bueno reitero es parte de la vida misma, los cambios situacionales que nos pueden ser benéficos o no tan favorables, pero implican desafíos y retos.
Pero basta, vamos a lo que nos reune aquí: “el aporte al conocimiento”.
No se trata de sentirme el “todopoderoso” o el “sabelotodo”
sino que creo debemos de cultivar e incentivar los retos y desafíos
que plantean los alumnos cuando nos sugieren tal o cual tecnología
para trabajar en clase.
En
este caso, el desafío era para mi, ya que parece ser que en las
materias pasadas ya habían usado este motor, mientras que en el otro
grupo fue el ganador el poderoso Oracle.
Mis
acercamientos con MySQL era referente a usarlo en combinación de php
o bien con Joomla, y algunos ejemplos para conectar con .NET o con
Java, pero nunca me había metido a mayor profundidad con el motor,
además que para facilitar las cosas se instalaba el XAMPP.
Ahora
teníamos que usar el IDE tan popular llamado MySQL Workbench, además
que mi reto era instalar una versión más reciente de MySQL, y bueno
como son fines educativos la versión de la “comunidad”.
Este proyecto contiene un formulario que permite realizar altas, bajas y cambios, este fue desarrollado en el lenguaje de programación Java Web, donde se implementó el framework Spring MVC, el cual facilita y optimiza el proceso para la creación de aplicaciones web utilizando el patrón MVC (Modelo-Vista-Controlador).
Como primera
instancia creamos una base de datos llamada “regristro_clientes”, la cual
contiene una tabla con 4 campos que se muestra a continuación:
Es una tecnología desarrollada por Microsoft, que a través de ADO.NET genera un conjunto de objetos que están directamente ligados a una Base de Datos, permitiendo a los desarrolladores manejar dichos objetos en lugar de utilizar lenguaje SQL contra la Base de Datos.
Surgimiento
Los
arquitectos y programadores de aplicaciones orientadas a datos se han
enfrentado a la necesidad de lograr dos objetivos muy diferentes. Deben modelar
las entidades, las relaciones y la lógica de los problemas empresariales que
resuelven, y también deben trabajar con los motores de datos que se usan para
almacenar y recuperar los datos, estos pueden abarcar varios sistemas de
almacenamiento, cada uno con sus propios protocolos; incluso las aplicaciones
que funcionan con un único sistema de almacenamiento deben equilibrar los
requisitos del sistema de almacenamiento con respecto a los requisitos de
escribir un código de aplicación eficaz y fácil de mantener.
Abrimos visual studio, damos clic en la parte superior “Archivo” luego “Nuevo” posteriormente “Proyecto”.
Creamos una aplicación de “Windows Forms (.NET Framework) ya que en este caso se hará con Windows Forms, esto es opcional según el gusto de cada persona, pueden crearlo en aplicación de consola o en aplicaciones webs.
Luego creamos nuestra base de datos, para ellos damos click en la parte superior “Ver”, “Explorador de servidores”.
Al dar clic en “Explorador de servidores” nos mostrará una ventana del lado izquierdo de la pantalla.
Luego, damos click derecho en “Conexiones de datos”, “Crear nueva base de datos de SQL Server”, esta se puede crear en Visual Studio o en sql server según la preferencia y la forma de trabajar de cada persona.
Luego creamos nuestra base de datos, para ellos agregamos el nombre de nuestro servidor (en el recuadro de lado izquierdo viene una opción llamada “Servidores” y es ahí donde te muestra el nombre de tu servidor) y el nombre de nuestra base de datos.
Una vez creada la base de datos, vemos que del lado izquierdo se ha agregado, pero por el momento esta vacía, ahora agregaremos una tabla, para ellos damos clic derecho en “Crear nueva tabla”.
Ya que se tiene creada la tabla, agregamos los campos que se van a requerir.
Ya creada la base de datos con las tablas que vamos a utilizar pasamos al primer Form1 esto para comenzar a insertar los textbox a utilizar para hacer la inserción de los datos a la base de datos mediante una tabla.
Ahora cambiaremos el id de cada uno de los textbox con el fin de saber el nombre de cada uno de ellos (según el campo) para la inserción de los datos.
Comenzamos
con el del nombre
Apellido
Paterno
Apellido
Materno
Teléfono
Dirección
Grado
Ahora, vamos a generar el modelo vista controlador, comenzando con una carpeta llamada modelo, ésta se crea dando click derecho sobre el proyecto – ‘Agregar’ – Nueva Carpeta.
Hasta ahora tenemos creada la carpeta del Modelo, ésta carpeta contendrá todo lo relacionado con la base de datos.
Ahora crearemos nuestro modelo, para ello damos click derecho sobre la carpeta modelo – Agregar – Nuevo elemento
Después de haber presionado nuevo elemento aparecerá la siguiente pantalla, entramos a datos – seleccionamos ADO.NET Entity Data Model y presionamos agregar, (el nombre tu lo seleccionas a tu criterio).
Seleccionamos la primera opción y presionamos en siguiente.
Ya que
tenemos lo anterior, ahora presionamos nuevamente siguiente
Escogemos la versión del framework que se va utilizar
Hacemos la selección de la base de datos que vamos a utilizar y presionamos en finalizar, después de esto solo queda esperar a que mappie las tablas de la base de datos.
Ahora lo que vamos a generar es la modelo vista controlador, seguido de una carpeta llamada vista, esta se crea dando click derecho sobre el proyecto – ‘Agregar’ – Nueva Carpeta.
Tenemos creada la carpeta del Vista, esta carpeta contendrá todo lo relacionado con las vistas del sistema, eso lo haremos seleccionando los FORM que se utilizaran y se arrastraran a la carpeta vista.
Lo que prosigue es copiar nuestra vista que ya tenemos creada a la carpeta de vista.
Ahora lo que vamos a generar es el controlador, ésta se crea dando click derecho sobre el proyecto – ‘Agregar’ – Nueva Carpeta a esta carpeta la llamaremos Controlador.
Esta carpeta servirá para realizar las consultas a nuestra base de datos
Ya creada la carpeta del controlador, dentro de ella se va crear una clase llamada ControladorWinForm
Entramos a la clase y agregamos el using para poder acceder a la base de datos que tenemos en el modelo.
Ahora vamos a crear una clase llamada DarAlta esta nos servirá para dar la inserción a la base de datos.
Ojo:
para la clase DarAlta son las variables que tiene nuestro form (nombre de los textBox),
ya que estarán ligadas con cada uno de los campos de la tabla de la base de
datos.
Teniendo completo lo anterior, nos pasamos al código el formulario, para inicializar nuestras variables en vacío, ya sean tipo string o int.
Esto lo haremos para el botón de inserción,
pero antes tenemos que agregar el using para que pueda entrar al controlador y
el del formulario, como se muestra en la parte superior de la imagen.
Después de esto vamos a crear variables con
los mismos nombres de los textbox, y las inicializamos en vacío.
El siguiente paso sería asignar esas variables a los textbox del form, en su parte de texto, esto para poder agregar datos a la base de datos.
Y por último realizamos una instancia de la
clase del controlador, esto para mandar llamar la clase DarAlta e insertar a la
bd.
Se le agregó un try and catch para cualquier
error que surgiera, esto es opcional
Y con esto ya se pueden insertar datos a una bd desde una aplicación de WindowsForm con Entity Framework y Patron MVC.
En este proyecto se implementó el desarrollo en C# utilizando Windows forms y una conexión a una base de datos local con entity framework. En imagen muestra la creación de forms con sus herramientas solo como un buscador para encontrar un empleado en la base de datos. Form es utilizado para la búsqueda del empleado que se encontró en la base de datos.
Asimismo, Se utilizó una serie de librerías que nos facilita a utilizar visual studio para darle mas funcionalidad a la aplicación y poder realizar las actividades deseadas. Librerías: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MVCproject.view; using MVCproject.Controller;
este es todo el conjunto de librerías usadas. División por carpetas:
Una vez instalada, lo interesante es usar este motor en su versión express como herramienta para aprender esta poderosa base de datos que aunque parezca extraño es muy similar al motor que vende de forma comercial, o al menos así había sido en versiones pasadas.