13 de febrero de 2011

Utilizando el MySQL Connector/NET

Buenas, miren que quiero compartir como conectarnos a una base de datos en MySQL desde Visual Basic 2005, hay 3 diferentes formas que compartiré con ustedes, por ODBC, utilizando OLEBD y a través del connector de MySQL para .NET, empezaré obviando que esta instalando tanto el MySQL como el Visual Studio y como una recomendacion para programadores que opten por este camino oscuro, les recomiendo las developer tools para desarrolladores .NET que utilizan MySQL de CoreLab, las cuales se integran muy bien al Visual Studio, bueno, al paso, para esto les enumero los que me parecen importantes:

1. Descargar Connector de MySQL para Visual Studio
Si, ya sé que puedes conectarte con mysql-connector-odbc o con MyOLEDB, estas opciones las veremos luego, por el momento utilizaremos el MySQL Connector/NET que es básicamente una colección de objetos utilizados para acceder a una base de datos MySQL, yo ocupé el mysql-connector-net-6.0.7 de la página http://dev.mysql.com/downloads/connector/net/6.2.html#downloads

Nos vamos con la plataforma Microsoft Windows, hay dos opciones de descarga, en mi caso use la versión que incluye el instalador a tu disco rígido local(.msi) y descomprimi el archivo para luego doble clic sobre el archivo de instalación para comenzar el proceso de instalación completa en el directorio por defecto.

2. Agregar Referencias a tu proyecto
Obvio, instalas el MySQL Connector/NET y debes referenciarlo para poder usarlo con Visual Basic, asi pues, necesitamos agregar una referencia a nuestro proyecto. Al agregar una referencia, le estamos diciendo a VB.NET dónde debe buscar MySQL Connector/NET para poder acceder a los objetos y métodos de Connector/NET.

Para agregar una referencia, elige la opción Add Reference(Agregar Referencia) del menú Project (Proyecto). Luego Browse (Examinar) y localiza la instalación de Connector/NET, generalmente ubicada en C:\Program Files\MySQL\MySQL Connector Net 1.0.2\bin Aqui te van a salir dos carpetas .NET 1.1 y la .NET 2.0, si estas trabajando con el vs 2003 agrega el 1.1, si estas con el vs 2005 agrega el 2.0
(La ruta puede variar dependiendo del número de versión de Connector/NET). Elige el archivo MySql.Data.dll y connector/NET se agregará a tu proyecto.

al abrir esa carpeta esta la dll que tenes que agregar se llama MySql.Data.dll

3. Importación del Sistema de Nombres de Connector/NET
Los objetos de VB.NET se organizan en sistemas de nombres. Los sistemas de nombres son agrupaciones lógicas de objetos que se utilizan para facilitar la organización los distintos objetos disponibles en VB.NET.

Si agregamos el namespace Imports MySql.Data.MySqlClient al principio del archivo fuente, nos podemos referir al objeto Connector/NET como MySqlConnection, sino pues simplemente te va tocar escribir MySql.Data.MySqlClient. MySqlConnection

4. String de conexión
Dim cad As String = "Database=xxx;Data Source=localhost;User Id=xxx;Password=xxx"

y si vas a usar un puerto diferente al default que se asigna al MySQl entonces debes especificarlo en la cadena de conexion:
Dim cad as String= "Server=tu_servidor;Port=tu_puerto;Database=tuBase;Uid=xxx;Pwd=xxx"

5. Agregar un Objeto MySqlConnection
El objeto de conexión funciona como un intermediario entre los demás objetos contenidos dentro de Connector/NET y el servidor MySQL, tenemos que asegurarnos de que cualquier función o procedimiento dentro del formulario tenga acceso al objeto de conexión, por lo tanto declararemos el objeto de conexión en primer lugar dentro de la clase:

Dim conn As New MySqlConnection(cad)

6. Instanciación del Objeto MySqlConnection
Ahora que ya hemos declarado el objeto de conexión, debemos instanciarlo. Hasta que no hayamos instanciado un objeto, no estará disponible para ser utilizado.
Para instanciar el objeto utilizaremos la palabra clave New:
con = New MySqlConnection()

7. Eliminación del Objeto MySqlConnection
Cada vez que hayamos terminado de trabajar por completo con un objeto es una buena práctica eliminarlo y así los recursos que ocupaba se liberan y el objeto deja de existir. Eliminamos un objeto llamando a su método .Dispose().

8. Conexión a MySQL desde VB a través del mysql-connector-net-6.0.7

Aqui viene lo importante, mira que yo he utilizado un datagridview para mostrar los datos, tu decides si lo utilizas o no.

Imports MySql.Data.MySqlClient
Public Class Form3

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim cad As String = "Database=lingo;Data Source=localhost;User Id=xxx;Password=xxx"
        Dim query As String = "select * from people"
        Dim conn As New MySqlConnection(cad)
        Dim da As New MySqlDataAdapter(query, conn)
        Try
            conn.Open()
            If conn.State = ConnectionState.Open Then
                MessageBox.Show("Conexion a MySQL exitosa !!!", "MySQL via connector.net")
            End If  
        Catch mierror As MySqlException
            MessageBox.Show("Error de Conexión a la Base de Datos: " & mierror.Message, "MySQL via connector.net")
        Finally
            Dim ds As New DataSet
            da.Fill(ds)
            DataGridView1.DataSource = ds.DefaultViewManager
            DataGridView1.DataSource = ds.Tables(0)
            conn.Close()
        End Try
        conn.Dispose()
    End Sub
End Class 

y ojalá que les sirva, en siguientes entradas publicaré como realizar la conexion con ODBC y con OLEDB, hay se ven