Professional Documents
Culture Documents
MySQL es una de las base de datos mas rpidas y potentes de la actualidad si a esto le agregamos lo rpido que se torna desarrollar bajo Visual Basic sin dudas corremos con grandes ventajas a la hora de crear potentes aplicaciones. No solo para acceder de forma local a nuestra base de datos sino tambin puede que necesitemos acceder a un servidor MySQL localizado en otra parte del mundo y hasta que este corra bajo Linux. Como primer paso debemos crear la referencia a RDO (Remote Data Object) desde nuestro Visual Basic, para esto vamos al men Proyecto > Referencias... y ah seleccionamos Microsoft Remote Data Object...
Esa va a ser la librera (similar a ADO o DAO) que nos va a dar todos los mtodos para poder conectarnos tanto local como de forma remota a un servidor MySQL. La aplicacin de ejemplo que hemos creado conecta al servidor indicado mediante un usuario y contrasea y nos devuelve todas las tablas de la base de datos indicada, veamos un grfico as queda mas claro...
Ese es el cdigo que nos conectara a nuestro servidor MySQL, vemos en negrita los comentarios en el cdigo que nos facilitaran entenderlo. El prximo paso ser obtener el listado de todas las tablas de la base de datos abierta....
Dim tabla As rdoTable Dim hay_tablas As Boolean hay_tablas = False cambiar_botones True 'recorremos todas las tablas For Each tabla In db.rdoTables 'extraemos el nombre de la tabla y lo agregamos en un listbox tablas.AddItem tabla.Name hay_tablas = True Next
If Not hay_tablas Then MsgBox "La base de datos esta vacia" boton_desconectar_Click End If
Hasta aca ya tenemos una lista de todas las tablas que hay en la base de datos, ahora solo nos queda listar el contenido de la tabla seleccionada...
Dim Dim Dim Dim Dim tabla As String consulta As New rdoQuery resultados As rdoResultset contenido_row As String columna As rdoColumn
contenido.Clear tabla = tablas.List(tablas.ListIndex) 'le indicamos al objeto consulta que usaremos db como base de datos activa Set consulta.ActiveConnection = db 'creamos la consulta SQL y la ejecutamos consulta.SQL = "SELECT * FROM " & tabla & " WHERE 1" consulta.Execute 'asigamos el resultado de la consulta a nuestro objeto resultados (rdoResultset) Set resultados = consulta.OpenResultset 'recorremos todos los resultados While Not resultados.EOF contenido_row = "" 'cargamos el contenido de cada registro For Each columna In resultados.rdoColumns contenido_row = contenido_row & columna.Name & "=" & resultados(columna.Name) & "; " Next 'agregamos el contenido de cada registro al listbox contenido.AddItem contenido_row resultados.MoveNext Wend 'cerramos y borramos los objetos resultados.Close Set resultados = Nothing
Bien hasta aca tenemos todos los aspectos bsicos de como conectarnos y trabajar con una base de datos MySQL desde Visual Basic, recordemos que el cdigo aca mostrado forma parte de nuestro ejemplo que podemos descargar desde aqu.
1.2 Introduccin.
MySQL se puede enlazar con el uso de ODBC, pero parece ms cmodo, el uso del mismo sistema basado en los objetos de conexin. Estos estn desarrollados y se pueden descargar de la pgina de SUN. Igualmente podemos descargar de la misma pgina el gestor de la base de datos, es decir MySQL y herramientas grficas de administracin.
1.4 Utilizacin.
Instalar el gestor de MySQL, se compone de distintos elementos, que cumplen con las necesidades de administracin desde la lnea de comandos. El comando de inicio del gestor es Cdigo: C:MySQL[/img]mysqld u root Una vez que se ha lanzado el gestor de MySQL, el servidor de MySQL, la ventana de DOS, quedar abierta, y ejecutndose dicho servidor. Mientras estemos utilizando VB con MySQL deber estar abierta dicha ventana.
Podemos crear un archivo de proceso por lotes, un escrip, para su inicio y otro para su posterior parada. Este sera el de inicio. Cdigo: ECHO OFF CLS ECHO INICIO DE MySQL D: Cd D:\Mysql\mysql-5.1.33-win32\bin MySQLd -u root
Y el de parada Cdigo: ECHO OFF CLS ECHO PARADA DE MySQL D: Cd D:\Mysql\mysql-5.1.33-win32\bin MySQLAdmin -u root shutdown Pause
Con estos dos archivos tenemos suficiente para probarlo. MySQL es una base datos muy completa, esos parmetros son los mnimos imprescindibles, a medida que se domina la herramienta, se debern incluir ms parmetros para su correcta utilizacin. El uso se supone en modo local, 'localhost'.
Deberemos saber donde hemos instalado dicha utilidad de SUN para su localizacin. Para ello hay que acudir a Proyecto-Agregar referencia. Y en la ventana
Pinchar en examinar hasta llegar a su ubicacin, que por defecto es la que vemos. Una vez seleccionada ya veremos como esta incluida la referencia en la pestaa de .Net.
A partir de aqu ya podemos hacer referencia a los mismos objetos que en SQL o en Acces para el uso de la base de datos, salvando las distancias claro est.
Est es una opcin de entre varias posibles. Hay que tener presente que la conexin es donde ms cambios vamos a encontrar siempre. Despus vamos a necesitar un objeto del tipo Command que ser el que realizar la tarea. Cdigo: Private Sub CrearBaseDatos() Dim Conexion As New MySql.Data.MySqlClient.MySqlConnection Dim CadenaSQL As String = "CREATE DATABASE " & NombreBaseDatos & ";" Dim CadenaConexion As String = "Data Source=localhost;User Id=root;" Dim Comando As New MySql.Data.MySqlClient.MySqlCommand(CadenaSQL) Conexion = New MySql.Data.MySqlClient.MySqlConnection(CadenaConexion) Try
Conexion.Open() Comando.Connection = Conexion Comando.CommandType = CommandType.Text Try Select Case Comando.ExecuteNonQuery Case 0 MsgBox("No se ha creado") Case 1 MsgBox("Creada") Case Else MsgBox("A saber que ha pasado") End Select Catch ex As MySql.Data.MySqlClient.MySqlException MsgBox("No se ha podido crear" & vbCrLf & _ "la base de datos.", MsgBoxStyle.Critical, Me.Text) End Try Catch ex As MySql.Data.MySqlClient.MySqlException MsgBox("No se ha podido establecer la" & vbCrLf & _ "conexin con la base de datos.", MsgBoxStyle.Critical, Me.Text) Finally Select Case Conexion.State Case ConnectionState.Open Conexion.Close() End Select End Try Conexion = Nothing End Sub
Esta es la sintaxis mnima para crear una base de datos. Cdigo: Dim CadenaSQL As String = "CREATE DATABASE " & NombreBaseDatos & ";"
Como no hay que esperar datos devueltos el objeto a utilizar para su creacin es un objeto Command. Cdigo: Conexion = New MySql.Data.MySqlClient.MySqlConnection(CadenaConexion) Conexion.Open() Comando.Connection = Conexion Comando.CommandType = CommandType.Text Select Case Comando.ExecuteNonQuery
La pregunta de control se basa en que haya un dato devuelto, que es la creacin de la base de datos. Cdigo: Select Case Comando.ExecuteNonQuery Case 0 MsgBox("No se ha creado") Case 1 MsgBox("Creada") Case Else MsgBox("A saber que ha pasado") End Select
En el ejemplo se supone que forma parte de una utilidad y por eso el objeto conexin se configura en el mismo procedimiento.
Tambin podemos hacerlo desde la herramienta grfica de administracin, pulsando en la zona de bases de datos y con el botn derecho del ratn seleccionar Create New Schema.
Solo hay que ceirse a la sintaxis de SQL. Un ejemplo algo ms complejo Cdigo: "CREATE TABLE IF NOT EXISTS Serv_Realiz " & _ "( " & _ "Socio VARCHAR(5)," & _ "Fecha VARCHAR(8), " & _ "Reserva VARCHAR(6), " & _ "Servicio VARCHAR(3) REFERENCES Servicios ON DELETE NO ACTION " & _ "ON UPDATE NO ACTION, " & _ "Numero VARCHAR(2) REFERENCES Serv_Exist ON DELETE NO ACTION " & _ "ON UPDATE NO ACTION, " & _ "Hora VARCHAR(5), " & _ "PRIMARY KEY (Socio, Fecha, Reserva)," & _ "FOREIGN KEY (Socio) REFERENCES Socios ON DELETE NO ACTION " & _ "ON UPDATE NO ACTION, " & _ "UNIQUE (Socio, Fecha, Reserva) " & _
")"
El cdigo puede ser el que sigue: Cdigo: Private Sub CreaTabla(ByVal Conexion As MySql.Data.MySqlClient.MySqlConnection, _ ByVal Comando As MySql.Data.MySqlClient.MySqlCommand, _ ByVal CadenaSQL As String) Comando = New MySql.Data.MySqlClient.MySqlCommand(CadenaSQL) Comando.Connection = Conexion Comando.CommandType = CommandType.Text Try ' capturamos si hay errores Select Case Comando.ExecuteNonQuery Case 0 MsgBox("No se ha creado " & CadenaSQL, MsgBoxStyle.Critical, Me.Text) Case 1 ' Creada la tabla Case Else MsgBox("A saber que ha pasado") End Select Catch ex As Exception ' si hay errores retornamos el mensaje de error MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text) ' con Finally que es parte de TRY CATCH y END TRY ' ponemos el cdigo que se ejecutar se produzca o no un error Finally Comando = Nothing ' lo eliminamos de la memoria End Try End Sub
La creacin de la tabla se basa en el mismo sistema que antes, el uso de un objeto command. El objeto connection se supone ya configurado. Cdigo: Comando = New MySql.Data.MySqlClient.MySqlCommand(CadenaSQL) Comando.Connection = Conexion Comando.CommandType = CommandType.Text Select Case Comando.ExecuteNonQuery Case 0 MsgBox("No se ha creado " & CadenaSQL, MsgBoxStyle.Critical, Me.Text) Case 1 ' Creada la tabla
Este procedimiento se llama pasando como parmetros un objeto Connection, un objeto Command, que se podra crear en el mismo procedimiento, no es imprescindible, y la instruccin SQL con la descripcin de la tabla. Cdigo: CreaTabla(Conexion, Comando, CadenaSQL)
Este procedimiento se puede basar en un array que contenga todas las tablas y un sistema adjunto de checkbox que habilite las que deseamos crear, en la fase de pruebas de la aplicacin es cmodo, despus no tiene sentido. Cdigo: ' Tablas de apoyo V(1).Nombre = "Tipos de socios" V(1).Create = "CREATE TABLE IF NOT EXISTS Tipo_Socio " & _ "( " & _ "Codigo VARCHAR(2) PRIMARY KEY," & _ "Denominacion VARCHAR(12) " & _ ")"
El bucle podra ser algo as. Cdigo: While X < V.Length Objeto = CType(Me.Panel01.Controls.Item(X), CheckBox) Select Case Objeto.Checked Case True CreaTabla(Conexion, Comando, V(X).Create) End Select X=X+1 End While
Esta es una forma de crear las tablas desde programa. Pero disponemos de la opcin del programa de administracin del entorno grfico que es comodo. Para ello arrancamos el programa MySQLAdministrator y pulsamos en el botn de Create Table. La ventana del programa es esta.
Seleccionamos en la lista de la izquierda la base de datos que deseamos utilizar y despus pulsamos Create Table. La ventana de creacin de una tabla es la que vemos y solo hay que ir aadiendo los campos e ir jugando con las pestaas de opciones en funcin de las necesidades de cada campo.
Al finalizar pulsar Apply Changes veremos como aparece una ventana con el cdigo SQL de la tabla, solo tenemos que pulsar Execute, y la tabla se incorporar a la base de datos.
Y el resultado es la adicin de la tabla a la base de datos. [img] align="" width="692" height="79" src="imagenes/Nivel_3_1_img_8.jpg[/img] Podemos observar como el motor de la tabla est mal seleccionado con respecto al resto de las tablas de la base de datos. Habra que seleccionar con el botn derecho en la tabla la opcin de editar tabla, para volver a la misma ventana de antes y en la pestaa de Table Options cambiar el motor de la tabla para que todo quede bien.
Y as con todas las tablas que deseemos crear o modificar. En esa ventana tambin podemos editar los datos de las tablas para comprobar el correcto funcionamiento de nuestros programas, seleccionando la tabla con el botn derecho del ratn la opcin de Edit Table Data. Disponemos de ms opciones es cuestin de documentarse.
La utilizacin de los objetos de MySQL puede facilitarse si importamos en las propiedades del proyecto el espacio de nombres de MySQL.Data.MySQLClient. Proyecto -Propiedades de proyecto -Referencias. De esa forma podemos escribir simplemente. Cdigo: Dim ObjSQL As MySqlConnection
Inicio de MySQL Query Browser Creacin de una Base de Datos Creacin de las Tablas 6. Creacin de un Usuario 7. Conclusin
o o o
Introduccin
En mi ltimo artculo, escrib cmo disear una base de datos de MySQL con el objetivo de almacenar datos para una aplicacin que se creara en Visual Basic.NET (VB.NET). Las definiciones de tablas completas pueden encontrarse enhttp://www.vbmysql.com/download/vbmysql-tutorial.sql. En este tutorial voy a mostrarte como instalar MySQL en Windows, instalar MySQL Query Browser y cmo cargar las definiciones de tablas en MySQL utilizando la funcin Script Editor de MySQL Query Browser. Este tutorial dar por sentado que ests utilizando Microsoft Windows como sistema operativo principal tanto para el servidor MySQL como para MySQL Query Browser, y que tu copia de Windows es una versin reciente basada en Windows NT como Windows 2000 o Windows XP. Este tutorial tambin asumir que no tienes ninguna versin previa de MySQL instalada. Al finalizar este tutorial, deberas tener una instalacin funcional de MySQL que contenga tu base de datos y algunos datos de ejemplo, lo que te permitir comenzar a programar en VB.NET en el prximo tutorial. Al final de este tutorial encontrars un hipervnculo a un script MySQL que contiene todas las sentencias SQL utilizadas. El script puede utilizarse para generar un clon exacto de la base de datos que haremos en este artculo.
MySQL se instalar en la carpeta C:\Program Files\MySQL\MySQL Server 4.1 (o su equivalenteC:\Archivos de Programa\MySQL\MySQL Server 4.1) y se te preguntar si quieres registrarte en el sitio de MySQL. La registracin es opcional pero resulta til si quieres utilizar los foros deforums.mysql.com o informar errores a bugs.mysql.com. La pantalla final del Asistente de Instalacin de MySQL te invita a inicial el Asistente de Configuracin de MySQL. Para ms informacin acerca de la utilizacin del Asistente de Instalacin de MySQL, dirgete ahttp://dev.mysql.com/doc/mysql/en/Windows_install_wizard.html.
Una vez que finalice el proceso de configuracin, presiona el botn Finish (Finalizar) para cerrar el asistente.
de datos test est marcada en negrita para indicar que es actualmente la base de datos por defecto; cualquier consulta que se ingrese ser ejecutada por defecto en la base de datos test. Para crear la base de datos, haz clic con el botn derecho dentro de la lista de bases de datos y elige la opcin Create New Schema (Crear Nuevo Esquema). Se te pedir un nombre para tu base de datos. En esta instancia, nuestra aplicacin no tiene un nombre entonces tendremos que elegir alguno bastante descriptivo. Como nuestra aplicacin registrar esencialmente quin ha entrado y salido de la oficina, voy a llamar a la base de datosentrada_salida. El nombre no tiene letras en mayscula para evitar los problemas de diferencias entre maysculas y minsculas que puedan existir entre las versiones de MySQL de Windows y Linux (notars que he actualizado el script SQL del ltimo tutorial para adaptarlo a esta convencin de nombres). Puedes separar las palabras con un guin, guin bajo o simplemente con nada. Evita el uso de espacios en el nombre de tu base de datos y recuerda que queremos evitar el uso de palabras reservadas. En mi caso, separar las palabras con un guin bajo. Una vez creada la base de datos, haz clic con el botn derecho y elige la opcin Make Default Schema (Establecer Esquema por Defecto). La tabla entrada-salida es ahora la base de datos por defecto y nuestras prximas sentencias de creacin de tablas se aplicarn a esta base de datos.
Creacin de un Usuario
Ahora que nuestras tablas estn en su lugar, tendremos que crear un usuario. Para crear una fila en una tabla con MySQL Query Browser, primero debes hacer doble clic en la tabla (en nuestro caso la tabla usuario). Esto crear una consulta SELECT * FROM usuario en el rea de consultas superior. Presiona el botn Execute (Ejecutar) para ejecutar la consulta y as crear una nueva solapa de resultados con un conjunto de filas vacas: Presiona el botn Edit (Editar) de la parte inferior de la ventana para habilitar la edicin, luego haz doble clic en el campo apellido para iniciar la edicin. Puedes utilizar la tecla Tab para desplazarte al siguiente campo de la fila a medida que ingresas los datos. En mi caso, ingres lo siguiente: apellido: Hillyer nombre: Mike telefono: 4033806535 SIN GUIONES nombreusuario: mike contrasea: 12345 administrador: VERDADERO eliminado: FALSO creado: 2004-11-27 11:41:00
Lo ms importante es recordar qu es lo que espera la tabla en trminos de formato de los datos. Tu nombre y apellido no pueden superar los 40 caracteres. Tu nmero de telfono no puede ser mayor a 10 caracteres. Tu nombre de usuario no puede exceder los 16 caracteres y tu contrasea no puede tener ms de 20 caracteres. Los valores para los camposadministrador y eliminado deben ser VERDADERO o FALSO y el campo creado debe tener el formato YYYY-MM-DD HH:MM:SS. Cuando hayas ingresado tus datos, presiona el botn Apply Changes (Aplicar Cambios) para crear la nueva fila. Tambin puedes hacer clic en el botn Edit (Editar) para desactivar la edicin.
Conclusin
Suponiendo que no has tenido errores, ya deberas tener una copia funcional de MySQL instalada, junto con MySQL Query Browser. Deberas haber podido crear la base de datos entrada_salida y llenarla con las tablas que habamos diseado en el tutorial anterior. Una vez que se crearon las tablas, deberas haber podido crear una nueva fila en la tabla usuario. Claro que tambin puedes hacer trampa y descargarte el script desdehttp://www.vbmysql.com/download/vb-mysql-tutorial-2.sql y ejecutarlo para crear una base de datos idntica a la que yo he creado. En mi prximo tutorial te ensear a descargar e instalar Visual Basic.NET Express Edition y el controlador de base de datos MySQL Connector/NET. Te mostrar cmo combinarlos para crear un sistema de acceso que permitir que los usuarios se autentiquen en tu base de datos MySQL.