|
MySQL: Desarrollar aplicación VB.Net con componentes enlazados a MySQL de forma nativa
Mostramos cómo desarrollar una aplicación usando Microsoft Visual Basic .Net 2010 que usa como motor de bases de datos MySQL Server y accede de forma nativa (sin ODBC, ni OLE DB), usando el MySQL Connector Net. Explicamos cómo crear tablas MySQL desde el diseñador de VB.Net, cómo realizar relaciones entre tablas y cómo añadir componentes enlazados a los datos de las tablas en un formulario de forma automática. Explicamos también cómo hacer un ejemplo de formulario maestro-detalle (clientes y sus facturas).
Requisitos para desarrollar aplicación con acceso a MySQL nativo usando Visual Basic .Net y driver Connector/NetA continuación indicamos los requisitos necesarios para desarrollar una aplicación, usando el IDE de desarrollo Microsoft Visual Basic .Net, que acceda de forma nativa (directa sin intermediarios) al motor de base de datos gratuito MySQL Server.
Instalar Visual Studio 2010 y desarrollar aplicación con acceso a PostgreSQL
Crear solución VB.Net con acceso a MySQL Server de forma nativa con MySQL Connector .Net y controles enlazadosVamos a explicar a continuación cómo usar el diseñador de Microsoft Visual Basic .Net 2010, con una conexión a MySQL Server, para crear tablas y relaciones desde el propio IDE de Visual Basic. Explicaremos también cómo agregar componentes enlazados a un formulario de VB.Net de forma automática, con solo arrastrar y soltar, tanto un grid (rejilla) de datos como campos enlazados. Mostraremos también cómo realizar un formulario en modo maestro - detalle (mostraremos cómo diseñar que para cada cliente que se seleccione aparezcan sus facturas asociadas). Crear nueva solución VB.NetPara agregar un nuevo proyecto o solución abriremos Microsoft Visual Basic .Net, en el menú pulsaremos en "Archivo" - "Nuevo proyecto": Seleccionaremos "Visual Basic" - "Windows" y en la parte derecha seleccionaremos "Aplicación de Windows Forms". Introduciremos el nombre para la solución, por ejemplo "AjpdSoftAccesoNativoMySQLEnlazado" y pulsaremos "Aceptar": Agregar conexión a MySQL Server desde el IDE de VB.Net, crear tablas y relaciones desde el Diseñador de tablasA continuación conectaremos el IDE de Visual Basic .Net a MySQL Server, así podremos administrar el servidor de bases de datos MySQL Server desde el propio IDE de desarrollo de Visual Basic. Esta conexión será sólo para enlazar el IDE de desarrollo de VB.Net con MySQL Server, no se usará para la aplicación que desarrollemos más asdelante, que requerirá de un Origen de datos. Para ello pulsaremos en el menú "Ver" - "Explorador de servidores": Desde la ventana del Explorador de servidores, pulsaremos con el botón derecho del ratón sobre "Conexiones de datos", en el menú emergente seleccionaremos "Agregar conexión": Puesto que hemos instalado MySQL Connector .Net, en la ventana de selección de origen de datos, nos mostrará, entre otros, "MySQL Database", lo seleccionaremos, en el desplegable de "Proveedor de datos" seleccionaremos ".NET Framework Data Provider for MySQL". Pulsaremos "Continuar": A continuación indicaremos los datos de conexión al servidor MySQL Server:
Una vez introducidos todos los datos para la conexión a MySQL Server desde Microsoft Visual Basic .Net, pulsaremos en "Probar conexión" para verificar que el servidor de MySQL Server está disponible y que los datos de conexión son correctos: Si todo es correcto mostrará el siguiente mensaje, si hay algún error mostrará un mensaje con el error que se haya producido:
El Explorador de servidores de Microsoft VB.Net enlazará con el servidor de MySQL Server indicado en la cadena de conexión y nos mostrará las tablas, vistas, procedimientos almacenados, etc. Desde esta ventana, seleccionando la conexión creada anteriormente (en nuestro caso "proyectoa.com(bdajpdsoft)", podremos crear tablas, crear vistas, consultar datos, modificar tablas, establecer relaciones, realizar consultas, etc. Todo ello integrado en el mismo IDE de VB.Net. Como ejemplo, vamos a crear dos tablas: "clientes" y "facturas" y, además, las enlazaremos en maestro detalle (clave foránea). Para crear una tabla en el servidor de MySQL Server desde VB.Net, pulsaremos con el botón derecho del ratón sobre "Tables" (una vez desplegada la conexión realizada anteriormente en la ventana del "Explorador de servidores" - "Conexiones de datos"), en el menú emergente seleccionaremos "Create table": Creremos las columnas (campos) que queramos para la tabla, asignándoles el tipo de datos adecuado para cada una de ellas. Por ejemplo, para la tabla "facturas", añadiremos los campos:
Una vez introducidos todos los campos de la tabla, estableceremos la clave principal (primary key), para ello seleccionaremos la columna (campo) que será clave primaria de la tabla, en nuestro caso "codigo" y pulsaremos en el menú "Diseñador de tablas" - "Establecer clave principal": Para identificarla, el diseñador habrá añadido un icono con forma de llave al campo que será clave primaria. Ahora podremos guardar la tabla, para ello pulsaremos en el botón "Guardar Tabla" (o las teclas Control + S): Puesto que es la primera vez que guardamos la tabla, nos solicitará el nombre para la tabla, introduciremos "facturas" y pulsaremos "OK": Desde el Explorador de soluciones podremos ver la nueva tabla creada en el servidor de MySQL Server desde el IDE de VB.Net, en el diseñador de tablas podremos consultar y modificar los campos de la tabla: Volveremos al Explorador de servidores para crear una segunda tabla "clientes", pulsaremos con el botón derecho y seleccionaremos "Create Table": Procederemos de la misma forma que para la tabla "facturas". Para la tabla "clientes" añadiremos los campos:
Estableceremos la columna "codigo" como clave primaria de la tabla y guardaremos con Control + S, en nombre introduciremos "clientes": Ahora crearemos la relación entre la tabla "clientes" y la tabla "facturas" mediante el campo "codigocliente" de la tabla facturas y "codigo" de la tabla "clientes". Para ello, con una de las dos tablas abiertas en el diseñador de tablas, pulsaremos en el menú "Diseñador de tablas" - "Relaciones":
En la ventana de Foreign Key Relationships (Relaciones de clave foránea), introduciremos los siguientes datos:
Una vez introducidos los datos para la clave foránea que relacionará la tabla "facturas" con la tabla "clientes" pulsaremos "Close": Guardaremos los cambios realizados:
Agregar nuevo origen de datos para enlace de la solución VB.Net con MySQL ServerAnteriormente hemos explicado cómo conectar el IDE de VB.Net a MySQL Server para administrar el servidor de base de datos desde el propio Visual Basic (crear tablas y demás). Ahora explicaremos cómo crear un nuevo origen de datos, que será el que utilicemos para la aplicación que vamos a desarrollar. Para crear un nuevo origen de datos pulsaremos en el menú "Datos" - "Agregar nuevo origen de datos": Desde la ventana de "Orígenes de datos" pulsaremos en "Agregar nuevo origen de datos" (en la parte inferior): En "Elegir un tipo de origen de datos" seleccionaremos "Base de datos", pulsaremos "Siguiente": En "Elegir un modelo de base de datos" seleccionaremos "Conjunto de datos" y pulsaremos "Siguiente": A continuación, en "Elegir la conexión de datos" seleccionaremos la que hemos creado anteriormente para el IDE de desarrollo, llamada "proyectoa.com(bdajpdsoft)". El asistente nos dará dos posibilidades para la contraseña, con la siguiente información:
Si marcamos la opción "Sí", la contraseña se guardará directamente (sin encriptar) en el string de conexión. Esto no es recomendado para aplicaciones profesionales con datos en producción, pues si un usuario malintencionado lee el fichero de configuración podrá saber el usuario y contraseña del servidor de MySQL Server y podrá acceder a las tablas directamente sin usar nuestra aplicación. De momento, para no complicar la aplicación, marcaremos "Sí" y, en otro momento, explicaremos cómo encriptar esta contraseña para que no suponga un fallo de seguridad. Pulsaremos "Siguiente" para continuar:
Guardaremos la cadena de conexión en el archivo de configuración de la aplicación, para ello marcaremos "Sí, guardar la conexión como" e introduciremos un nombre para la cadena de conexión, por ejemplo "bajpdsoftConnectionString":
Ahora elegiremos los objetos de la base de datos que necesitemos usar para desarrollar nuestra aplicación VB.Net, en nuestro caso seleccionaremos las dos tablas creadas anteriormente "clientes" y "fcaturas", así como todos sus campos. El asistente nos mostrará todas las tablas, vistas y demás objetos del servidor de MySQL Server, seleccionaremos sólo aquellos que necesitemos para la aplicación: Automáticamente, el asistente creará la ventana con el Dataset seleccionado, incluso nos mostrará gráficamente las relaciones entre las tablas, para ello creará automáticamente el fichero "bdajpdsoftDataset.xsd". Desde esta ventana tendremos los TableAdapter (consultas sobre las tablas) que, más adelante, usaremos para agregar los componentes al formulario: Además, el asistente también habrá creado el fichero de configuración de la aplicación "app.config" con los datos del string de conexión:
Agregar componentes al formulario de la aplicación VB.Net enlazados con MySQL de forma nativaTras crear el origen de datos y los TableAdapter correspondientes a cada tabla de nuestra aplicación (clientes y facturas), ahora crearemos el formulario (ventana) que presentaremos al usuario final y será con la que interactúe. Realizaremos este proceso casi de forma automática, arrastrando y soltando (drag and drop). Desde el menú "Datos" seleccionaremos "Mostrar orígenes de datos": En la ventana de Orígenes de datos nos mostrará el Dataset creado anteriormente "bdajpdsoftDataset" con los TableAdapter de "clientes" y "facturas". Para agregar un grid (rejilla) al formulario donde el usuario podrá consultar y modificar directamente los clientes, pulsaremos en el desplegable de "clientes" y seleccionaremos "DataGridView": Para agregar un DataGridView enlazado a "clientes" en el formulario será tan sencillo como arrastrar "clientes" al formulario y soltar, automáticamente el asistente de VB.Net nos creará un BindingNavigator (barra de botones para navegación por los registros) y un DataGridView enlazados a "clientes":
Si queremos mostrar también al usuario en el formulario componentes enlazados de tipo TextBox y demás (más eficientes para insertar y modificar datos), en la ventana de "Orígenes de datos", pulsaremos en el desplegable de "clientes" y seleccionaremos "Detalles". Ahora, volveremos a arrastrar y soltar "clientes" al formulario. El asistente de VB.Net, de forma automática, nos insertará en el formulario los componentes necesarios enlazados a los datos de forma automática:
Ahora podremos probar nuestra aplicación VB.Net con acceso a MySQL Server sin añadir ni una sola línea de código fuente (el asistente añadirá algunas, pero muy pocas). Para ello pulsaremos en el botón "Iniciar depuración" o la tecla F5: Ya podremos agregar nuevos clientes y consultar los actuales, todo ello casi de forma automática: El código fuente que ha añadido el asistente podremos verlo seleccionando el botón "Guardar" del BindingNavigator, pulsando con el botón derecho del ratón y seleccionando "Ver código": Las tres líneas de código añadidas por el asistente de forma automática para guardar los cambios realizados en la tabla "clientes": Private Sub ClientesBindingNavigatorSaveItem_Click( _ sender As System.Object, e As System.EventArgs) _ Handles ClientesBindingNavigatorSaveItem.Click Me.Validate() Me.ClientesBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.BdajpdsoftDataSet) End Sub Para agregar el grid (rejilla de datos DataGridView) de "facturas" procederemos de la misma forma que para "clientes", teniendo en cuenta que usaremos el "facturas" que cuelga de "clientes", pues es el que tiene el enlace entre ambas. Así pues, en el desplegable de "facturas" (el que está dentro de "clientes"), seleccionaremos "DataGridView" y arrastraremos al formulario:
Teniendo en cuenta que el asistente ahora no nos creará un BindingNavigator, lo agregaremos manualmente más adelante. Para el caso de los detalles, procederemos de la misma forma que para el caso de los clientes, desde "facturas", pulsaremos en el desplegable y seleccionaremos "detalles": Arrastraremos y soltaremos en el formulario y el asistente nos agregará los componentes necesarios:
Puesto que el asistente no ha agregado un BindingNavigator, lo agregaremos manualmente desde la ventana "Cuadro de herramientas", sección "Datos", seleccionaremos "BindingNavigator" y lo colocaremos encima del grid (DataGridView) de facturas. Para enlazarlo con su BindingSource correspondiente pulsaremos con el botón derecho sobre el BindingNavigator y seleccionaremos "Propiedades", en la ventana de propiedades del BindingNavigator buscaremos la propiedad "BindingSource", en el desplegable seleccionaremos "FactuasBindingSource": Ahora agregaremos el botón "Guardar" al BindingNavigator, para ello pulsaremos en el desplegable y seleccionaremos "Button": Seleccionaremos el nuevo Button añadido a la barra de botones de facturas (BindingNavigator) y pulsaremos con el botón derecho del ratón, en el menú emergente seleccionaremos "Propiedades": Pulsaremos en el botón "Eventos" (el rayo) , haremos doble clic en el evento "Click": Añadiremos el siguiente código (casi el mismo que para el botón Guardar del BindingNavigator de clientes): Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton1.Click Me.Validate() Me.FacturasBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.BdajpdsoftDataSet) End Sub Nos queda un pequeño detalle para que nuestra aplicación VB.Net, con acceso a MySQL Server de forma nativa y con componentes enlazados de forma automática en maestro detalle, funcione. Haremos una pequeña modificación en el componente "TableAdapterManager" generado automáticamente, pulsaremos con el botón derecho sobre él y seleccionaremos "Propiedades", buscaremos la propiead "facturaTableAdapter" y en el desplegable seleccionaremos "FacturasTableAdapter": De esta forma tan sencilla y sin apenas código ya tendremos nuestra aplicación lista para funcionar, obviamente hemos desarrollado un pequeño ejemplo, una aplicación profesional requerirá de múltiples ventanas, múltiples tablas y relaciones entre ellas. Para probar nuestra aplicación VB.Net pulsaremos "F5": Como vemos en la imagen, podremos añadir clientes, y podremos añadir varias facturas para un cliente, cuando nos movamos por los clientes, en el grid de facturas aparecerán las facturas asociadas a cada cliente. Todo ello de forma automática: Además, cuando añadamos una nueva factura, automáticamente el campo "codigocliente" aparecerá rellenado con el código del cliente seleccionado, gracias a la relación establecida al principio. Por supuesto existen muchas mejoras que podríamos y deberíamos realizar si vamos a desarrollar una aplicación para venta y uso de clientes. Por ejemplo, lo ideal sería que el campo "codigocliente" de la tabla "facturas" ni siquiera apareciese, en su lugar debería haber un desplegable para que el usuario pudiera elegir el cliente de la factura. Explicaremos cómo implementar esto en otro momento. Desde el Explorador de servidores podremos ver cómo queda el contenido de las tablas del servidor de MySQL Server al qu estamos atacando con nuestra aplicación, pulsando en la tabla con el botón derecho y seleccionando "Recuperar datos": Qué se necesita en el equipo cliente para ejecutar una aplicación VB.Net con acceso nativo a MySQL ServerPara distribuir nuestra aplicación sin necesidad de instalador, en el equipo donde será ejecutada necesitaremos:
Con estos dos ficheros (ejecutable y dll) y el Microsoft .Net Framework descargado he instalado, podremos utilizar la aplicación, por ejemplo, en un equipo con Microsoft Windows XP, Vista ó 7, sin realizar ninguna instalación (salvo .Net Framework). Código fuente source code de la aplicación AjpdSoft Acceso nativo MySQL enlazado VB.NetA continuación mostramos el código fuente de la aplicación AjpdSoft Acceso nativo MySQL enlazado, gran parte generado automáticamente por los asistentes.
Public Class formAccesoMySQLEnlazado Private Sub ClientesBindingNavigatorSaveItem_Click( _ sender As System.Object, e As System.EventArgs) _ Handles ClientesBindingNavigatorSaveItem.Click Me.Validate() Me.ClientesBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.BdajpdsoftDataSet) End Sub Private Sub formAccesoMySQLEnlazado_Load( _ sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'TODO: esta línea de código carga datos en la 'tabla() 'BdajpdsoftDataSet.facturas' 'Puede moverla o quitarla según sea necesario. Me.FacturasTableAdapter.Fill(Me.BdajpdsoftDataSet.facturas) 'TODO: esta línea de código carga datos en la 'tabla 'BdajpdsoftDataSet.clientes' 'Puede moverla o quitarla según sea necesario. Me.ClientesTableAdapter.Fill(Me.BdajpdsoftDataSet.clientes) End Sub Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton1.Click Me.Validate() Me.FacturasBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.BdajpdsoftDataSet) End Sub End Class
Artículos relacionados
CréditosArtículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft. Anuncios
Enviado el Jueves, 08 septiembre a las 14:22:23 por ajpdsoft
|
|