Pues eso… hace unos días he estado haciendo una pequeña aplicación para acceder a una base de datos de MySQL creada en un servidor web de Domitienda y voy a aprovechar para comentarte las cosillas que he hecho (como conectar a una BBDD de MySQL, enviar emails, obtener datos de tres tablas diferentes pero que había que relacionar para sacar lo que interesaba, etc.) y la primera fue lo más importante: Conectar con una base de datos de MySQL con Visual Basic .NET (o .NET en general).
Y esto es lo que te voy a contar en este "artículo" de hoy lunes 13 de abril de 2015.
Los requisitos
Lo primero que deberías hacer es descargarte la DLL (librería/biblioteca) de MySQL para usar con Visual Studio, bueno, en realidad lo que yo me iba a bajar el Connector .NET, concretamente la versión 6.9.6 porque decía que la versión 6.7 el Connector/Net no incluye el "MySQL for Visual Studio integration", así que ni me puse a "investigar" a qué se refería, por tanto me bajé el MySQL for Visual Studio, concretamente la versión web community 5.6.23.0 (a la hora de escribir esto está la versión 5.6.24.0).
Nota:
El descargar la versión "web community" es porque tenía conexión a internet y así solo tenía que descargar 1.6MB frente a los 286,7MB de la versión off-line.
Es un MSI installer y te da un montón (o dos o tres o cuatro, pal caso es lo mismo) de opciones, pero solo usé la del Connector o lo que pusiera en las opciones de instalación.
Añadir la referencia de MySql.Data al proyecto
Una vez instalado, en el proyecto desde el que quieras acceder a la base de datos de MySQL le agregas la referencia correspondiente.
En mi caso usé la versión 4.5 ya que el proyecto también usaba el .NET Framework 4.5 (ver la figura 1).
Figura 1. Referencia al ensamblado de MySql.Data versión 6.9.5
Y una vez que hemos agregado la referencia al ensamblado MySql.Data ya podemos acceder a las clases de conexión y demás, que están en el espacio de nombres MySql.Data.MySqlClient.
Y el resto… como de costumbre… pero no te preocupes te voy a poner el código (primero para VB y después para C#) de cómo usar la conexión y acceder a una tabla y demás, pero eso será… ¡ma-ña-na! 🙂
Bueno, vale, al menos te pondré el código de cómo conectar a la base de datos.
Conectar a la base de datos de MySQL desde Visual Basic .NET
Yo suelo usar un método en una clase con métodos compartidos (en VB puedes usar un módulo, pero yo uso una clase para después convertir fácilmente el código a C#), el método es una función llamada CadenaConexion que devuelve una cadena con la cadena de conexión generada por la clase ConnectionStringBuilder, en realidad la clase se llama MySqlConnectionStringBuilder, pero si has usado conexión a SQL Server sabrás que en ese caso el nombre es SqlConnectionStringBuilder.
Para poder acceder a las clases de MySql.Data debes añadir una importación de espacios de nombres a MySql.Data.MySqlClient:
' Para Visual Basic:
Imports MySql.Data.MySqlClient
// Para C#:
using MySql.Data.MySqlClient;
Y esta es la definición del método que está en una clase (class) de VB y por eso el método lo he definido como Shared (static en C#) para que lo puedas usar simplemente anteponiendo el nombre de la clase y sin necesidad de crear nuevas instancias ni nada de eso:
El código del método CadenaConexion para Visual Basic:
''' <summary>
''' La cadena de conexión a la base de datos
''' </summary>
Public Shared Function CadenaConexion() As String
Dim csb As New MySqlConnectionStringBuilder
csb.Server = "mysql3.servidoreswindows.net"
csb.Database = "nombre_Base_Datos"
csb.UserID = "nombre_usuario_de_la_base"
csb.Password = "la_clave_del_usuario_de_la_base"
csb.IntegratedSecurity = False
Return csb.ConnectionString
End Function
El método CadenaConexion para C#:
/// <summary>
/// La cadena de conexión a la base de datos
/// </summary>
public static string CadenaConexion()
{
MySqlConnectionStringBuilder csb = new MySqlConnectionStringBuilder();
csb.Server = "mysql3.servidoreswindows.net";
csb.Database = "nombre_Base_Datos";
csb.UserID = "nombre_usuario_de_la_base";
csb.Password = "la_clave_del_usuario_de_la_base";
csb.IntegratedSecurity = false;
return csb.ConnectionString;
}
Y esto es todo por hoy… mañana (seguramente)… más… 😉
Nos vemos.
Guillermo