Conexión de C# a base de datos en MySQL 8

En este artículo te mostraremos a realizar una conexión a una base de datos en MySQL 8 desde C#.

Requisitos

  • Visual Studio 2013 o superior. Descargar
  • .NET Framework 4.5.2 o superior para Visual Studio
  • MySQL 8.x Descargar
  • MySQL Connector/NET 8.x Descargar

Implementación

Para iniciar necesitamos crear un proyecto de C# en Visual Studio y una base de datos en MySQL.

Agregar referencia

El conector de MySQL previamente instalado lo encontraremos en la carpeta C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies dentro de esta carpeta contendrá una carpeta con la versión del conector.

Ruta de instalación
Conector MySQL.Data.dll

Teniendo la ubicación del conector (MySQL.Data.dll) abrimos nuestro proyecto de C# en Visual Studio y vamos al explorador de soluciones, damos clic derecho en el nombre del proyecto, nos posicionamos en la opción de agregar y en seguida damos clic en Referencia…

Agregar referencia Visual Studio

Abrirá el administrador de referencias, en el panel izquierdo seleccionamos Examinar, en la parte inferior presionamos el botón Examinar y en el cuadro de búsqueda ubicamos el conector MySQL.Data.dll y lo agregamos.

En el explorador de soluciones aparecerá el conector de MySQL.

 

Crear conexión de base de datos

Para realizar la conexión de C# y MySQL estoy utilizando un proyecto de Aplicación de  Windows Forms pero se puede realizar mediante otro tipo de proyecto.

En un formulario agregamos un botón con las siguientes propiedades:

  • Name: btnConectar
  • Text: Conectar
  • El diseño puede ser el de su preferencia.

Damos doble clic en el botón y abrirá la clase con código que le dará funcionalidad al formulario.

Encontraremos el método del evento clic del botón.

 private void btnConectar_Click(object sender, EventArgs e)
        {

        }

Dentro de este método agregaremos la conexión a nuestra base de datos en MySQL.

private void btnConectar_Click(object sender, EventArgs e)
        {
            string servidor = "localhost"; //Nombre o ip del servidor de MySQL
            string bd = "mysql"; //Nombre de la base de datos
            string usuario = "root"; //Usuario de acceso a MySQL
            string password = "password"; //Contraseña de usuario de acceso a MySQL
            string datos = null; //Variable para almacenar el resultado

            //Crearemos la cadena de conexión concatenando las variables
            string cadenaConexion = "Database=" + bd + "; Data Source=" + servidor + "; User Id=" + usuario + "; Password=" + password + "";

            //Instancia para conexión a MySQL, recibe la cadena de conexión
            MySqlConnection conexionBD = new MySqlConnection(cadenaConexion);
            MySqlDataReader reader = null; //Variable para leer el resultado de la consulta

            //Agregamos try-catch para capturar posibles errores de conexión o sintaxis.
            try
            {
                string consulta = "SHOW DATABASES"; //Consulta a MySQL (Muestra las bases de datos que tiene el servidor)
                MySqlCommand comando = new MySqlCommand(consulta); //Declaración SQL para ejecutar contra una base de datos MySQL
                comando.Connection = conexionBD; //Establece la MySqlConnection utilizada por esta instancia de MySqlCommand
                conexionBD.Open(); //Abre la conexión
                reader = comando.ExecuteReader(); //Ejecuta la consulta y crea un MySqlDataReader

                while (reader.Read()) //Avanza MySqlDataReader al siguiente registro
                {
                    datos += reader.GetString(0) + "\n"; //Almacena cada registro con un salto de linea
                }

                MessageBox.Show(datos); //Imprime en cuadro de dialogo el resultado
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message); //Si existe un error aquí muestra el mensaje
            }
            finally
            {
                conexionBD.Close(); //Cierra la conexión a MySQL
            }
        }

Después de escribir el código nos mostrará algunos errores y funciones subrayadas porque necesitamos agregar el namespace del conector de MySQL, para esto vamos a la parte de arriba del código y veremos algunas lineas que inician con la palabra using allí agregamos la de MySQL.

using MySql.Data.MySqlClient;

Al ejecutar la aplicación y presionar el botón Conectar nos muestra un listado de las bases de datos que tenemos en MySQL.

Podemos modificar la consulta dependiendo de nuestras necesidades.

 

Posibles errores y soluciones

Error de conexión

Cuando presionamos el botón Conectar y nos muestra un mensaje de error de acceso denegado debemos verificar que los datos de conexión sean los correctos, como la dirección del servidor, el nombre de la base de datos, el usuario de acceso y la contraseña del usuario de acceso.

 

Compatibilidad de .NET Framework

Nos puede mostrar un error de compatibilidad con el .NET Framework que utilizamos, debemos verificar la versión que utiliza el proyecto, la cual debe ser 4.5.2 o superior ya que las versiones anteriores no son compatibles con el conector.

Para cambiar la versión de .NET Framework damos clic derecho en el proyecto y seleccionamos propiedades. En la ventana que muestra nos posicionamos en la pestaña de Aplicación, dentro buscamos la opción Versión de .NET Framework de destino y seleccionamos una versión compatible. Si no se tiene una versión compatible la opción final nos permite instalar diferentes versiones.

 

Dejemos este vídeo en el cual realizamos una conexión pero de C# a MySQL 5 la cual es un poco similar.