No soy experto en Visual Basic, pero de cuando en cuando lo uso. El año pasado desarrollé un pequeño tutorial que nos lleva sin muchas complicaciones (Tanto como sea posible) A desarrollar una aplicación que se conecte a una base de datos MySQL, utilizando el conector ODBC, luego podremos hacer consultas mediante SQL.
El mismo proceso funciona para conectarse a una base de datos del infame Access, u otras bases de datos.
Requisitos:
Tener instalado MySQL Server
Tener instalado el driver ODBC para MySQL
Este ejercicio se basa en la versión de Visual Studio 2010
¡Comencemos!
1- En primer lugar descargaremos el driver ODBC de la web: http://www.mysql.com/products/connector/.
2- Seguidamente lo instalaremos en el equipo o equipos que se conectarán a MySQL: descomprimiremos el archivo mysql-connector-odbc-3.51.16-win32.zip y ejecutaremos la instalación:
3- Para comprobar que se ha instalado correctamente el driver MyODBC, podremos crearnos una conexión de ejemplo, desde "Inicio" - "Configuración" - "Panel de control" - "Herramientas administrativas" - "Orígenes de datos ODBC". En la pestaña "DSN de sistema" (si queremos que esté disponible para todos los usuarios del equipo) ó "DSN de usuario" (para que sólo esté disponible para el usuario actual con el que hemos iniciado sesión), pulsaremos en "Agregar":
4- Seleccionaremos el origen de datos "MySQL ODBC 3.51 Driver" (o el correspondiente a la versión de MySQL ODBC de que dispongamos), pulsaremos "Finalizar":
5- Rellenaremos los datos correspondientes en la pestaña "Login":
Data Source Name: conexion_vb
Description: Conexión BD Visual Basic .Net
Server: localhost
User: root (O el usuario de la base de datos, como en este ejemplo estoy usando la de prueba)
Password: la que ustedes le pusieron al root o el usuario de la base de datos
Database: test
Una vez completados los datos anteriores pulsaremos "Test" para comprobar que la conexión funciona correctamente:
6- Si no hay problemas veremos la siguiente ventana:
Segunda parte, diseño de la interface:
1- Tras instalar el driver MyODBC correspondiente, abriremos Microsoft Visual Studio, seleccionaremos "Nuevo proyecto...":
2- En "Tipos de proyecto" seleccionaremos "Visual Basic" - "Windows", en "Plantillas" seleccionaremos "Aplicación para Windows":. En "Nombre" introduciremos el nombre del proyecto, en nuestro caso "Conexión a MySQL". Pulsaremos "Aceptar" para continuar:
3- El asistente de creación de nuevo proyecto Visual Studio (Visual Basic) nos creará un proyecto con la siguiente estructura: El proyecto en sí (My Project), un diagrama de clase (ClassDiagram1.cd) y un formulario (Form1.vb).
En nuestro caso hemos decidido cambiar el nombre al fichero del formulario, para ello, desde la ventana de "Explorador de soluciones", pulsamos con el botón derecho del ratón sobre Form1.vb y seleccionamos "Cambiar nombre":
4- También cambiaremos el nombre al objeto Formulario, para ello seleccionaremos el formulario en si (el que aparece a la izquierda y en la ventana de "Propiedades", nos situamos en la propiedad "Name" e introducimos en nombre que queramos darle al formulario:
5- Ahora construiremos la siguiente interface (Arrastrando los elementos al formulario desde el panel “Toolbox” en caso de que esté desactivado, lo activaremos desde en menú View/ tolos o presionando las teclas Control + Alt + x
6- Arrastraremos los siguientes objetos a la aplicación:
1- Objeto Groupbox, con el nombre Groupbox1 y el texto “Datos de conexión”
2- Objeto label, con nombre Label1 y el texto “Motor BD”
3- Objeto comboBox, con el nombre txtMotor
Tomemos en cuenta que el nombre de los objetos se asigna desde el panel “Properties”
7- Y que el texto va desplegar desde la opción text, en el mismo panel properties.
8- Los elementos que se han agregado hasta el momento:
9- Colocaremos el puntero del mouse sobre el combobox, presionaremos el botón derecho del mouse para activar el menú y elegiremos la opción Edit Items
10- Escribiremos MySQL, y haremos clic en ok
11- Agregaremos dos botones y un label más, a los botones les asignaremos los nombres:
4- bConectar
5- bDesconectar
Al label le asignaremos el nombre
6- lInfo
7- Agregaremos otro Groupbox, con el nombre GroupBox2, y le asignamos el texto “SQL a ejecutar”
8- Agregaremos un textBox, con el nombre txtSQL
Podemos activar el scrollbar desde el panel de Propiedades:
Agregaremos tres botones más, con los nombres:
9- bEjecutar
10- bCargar
11- bGuardar
12- Agregaremos otro label, con el nombre label4, y el texto: “El resultado se muestra con los campos separados por tabulador”
13- Agregaremos un textbox con el nombre txtResultado
Finalmente agregaremos cuatro botones con las siguientes características:
14- bGuardarResultado
15- bSeleccionarTodo
16- bCopiar
17- bLimpiar
Tercera parte, programación
Seleccionaremos el formulario e iremos al menú "Ver" - "Código" o simplemente pulsaremos la tecla F7):
Agregaremos el siguiente código de programación:
Imports System.Data
Imports System.Data.Odbc
Imports System
Imports System.IO
Public Class formMenuPrincipal
Public conexionBD As OdbcConnection
Private Sub bConectar_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles bConectar.Click
Try
If (txtMotor.Text = "MySQL" Or (txtMotor.Text = "" Then
conexionBD = New OdbcConnection("dsn=conexion_vb"
’Importante, después de dsn= escribir el nombre de la conexión que creamos en la primera parte
End If
conexionBD.Open()
lInfo.Text = "Conectado correctamente"
bDesconectar.Enabled = True
bEjecutar.Enabled = True
Catch ex As OdbcException
lInfo.Text = "Error en la conexión"
bDesconectar.Enabled = False
bEjecutar.Enabled = False
MsgBox(ex.Message)
End Try
End Sub
Private Sub bDesconectar_Click(ByVal sender _
As System.Object, ByVal e As System.EventArgs) _
Handles bDesconectar.Click
Try
conexionBD.Close()
lInfo.Text = "Desconectado correctamente"
Catch ex As OdbcException
'silenciosa
lInfo.Text = "Desconectado correctamente"
End Try
End Sub
Private Sub bEjecutar_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles bEjecutar.Click
Try
Dim sql As String = txtSQL.Text
Dim comandoSQL As OdbcCommand = _
New OdbcCommand(sql, conexionBD)
Dim resultadoSQL As OdbcDataReader = _
comandoSQL.ExecuteReader()
Dim i As Integer
txtResultado.Clear()
For i = 0 To resultadoSQL.FieldCount - 1
If txtResultado.Text <> "" Then
txtResultado.Text = txtResultado.Text & _
Chr(9) & resultadoSQL.GetName(i)
Else
txtResultado.Text = resultadoSQL.GetName(i)
End If
Next i
While resultadoSQL.Read
txtResultado.Text = txtResultado.Text & _
Chr(13) & Chr(10)
For i = 0 To resultadoSQL.FieldCount - 1
If i = 0 Then
txtResultado.Text = txtResultado.Text & _
resultadoSQL(i).ToString
Else
txtResultado.Text = txtResultado.Text & _
Chr(9) & resultadoSQL(i).ToString
End If
Next i
End While
Catch ex As OdbcException
MsgBox(ex.Message)
End Try
End Sub
Private Sub bGuardar_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles bGuardar.Click
Dim dlAbrir As New _
System.Windows.Forms.SaveFileDialog
dlAbrir.Filter = "Archivos de Texto (*.txt)|*.txt|" & _
"Archivos de SQL (*.sql)|*.sql|" & _
"Todos los archivos (*.*)|*.*"
dlAbrir.CheckFileExists = False
dlAbrir.OverwritePrompt = True
dlAbrir.Title = "Guardar SQL en fichero"
dlAbrir.ShowDialog()
If dlAbrir.FileName <> "" Then
Dim fichero As New _
System.IO.StreamWriter(dlAbrir.FileName)
fichero.WriteLine(txtSQL.Text)
fichero.Close()
End If
End Sub
Private Sub bCargar_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles bCargar.Click
Dim dlAbrir As New _
System.Windows.Forms.OpenFileDialog
dlAbrir.Filter = "Archivos de Texto (*.txt)|*.txt|" & _
"Archivos de SQL (*.sql)|*.sql|" & _
"Todos los archivos (*.*)|*.*"
dlAbrir.CheckFileExists = False
dlAbrir.Multiselect = False
dlAbrir.Title = "Abrir fichero SQL"
dlAbrir.ShowDialog()
If dlAbrir.FileName <> "" Then
Dim fichero As New _
System.IO.StreamReader(dlAbrir.FileName)
txtSQL.Text = fichero.ReadLine
fichero.Close()
End If
End Sub
Private Sub bLimpiar_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles bLimpiar.Click
txtResultado.Clear()
End Sub
Private Sub bCopiar_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles bCopiar.Click
txtResultado.Copy()
End Sub
Private Sub bSeleccionarTodo_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles bSeleccionarTodo.Click
txtResultado.SelectAll()
End Sub
Private Sub bGuardarResultado_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles bGuardarResultado.Click
Dim dlAbrir As New _
System.Windows.Forms.SaveFileDialog
dlAbrir.Filter = "Archivos de texto (*.txt)|*.txt|" & _
"Todos los archivos (*.*)|*.*"
dlAbrir.CheckFileExists = False
dlAbrir.OverwritePrompt = True
dlAbrir.Title = "Guardar resultado ejecución SQL"
dlAbrir.ShowDialog()
If dlAbrir.FileName <> "" Then
Dim fichero As New _
System.IO.StreamWriter(dlAbrir.FileName)
fichero.WriteLine(txtResultado.Text)
fichero.Close()
End If
End Sub
End Class
Terminado lo anterior pueden presionar la tecla F5 para probar la aplicación. Con Shift + F5 detienen la ejecución.
Con el programa ejecutándose, pueden hacer lo siguiente:
1- Seleccionar desde el combobox el motor de base de datos
2- Hacer clic en el botón Conectar
3- Escribir una sentencia MySQL
4- Hacer clic en ejecutar
Si queremos podemos guardar los resultados, copiar o limpiar la pantalla
Estoy seguro que este tutorial ayudará a algunos que estén aprendiendo a usar Visual, preguntas o comentarios estoy a la orden.