Conexion CSharp [C#] a MySQL

En nuestra estimada carrera que llevamos en la UPAO tenemos el curso de Programación de Aplicaciones de Gestión, más conocido como P.A.G en el cual se realizan proyectos muy interesante con Visual Studio.net [algunos VB, otros C#] donde al final dichos proyectos, deben estar implementados con conexión a base de datos y manipulación de éstos, en aquella ocasión nos enseñaron a utilizar SQL Server 2008. En la carrera, comenzamos a programar con Java, lenguaje que nos acompaña durante los 3 primeros ciclos, en 4to ciclo aprendemos Base de datos con Oracle. Me gustaría hacer un paréntesis, y mostrar que también es posible utilizar MySQL vinculado con el poder de C# en Visual Studio.net, así que sin dar más vueltas veamos como hay que hacer!

Adicionalmente de MySQL, se requiere el conector:
http://www.mysql.com/downloads/connector/net/

Una vez instalado, procedemos a crear nuestro proyecto [Console] con Visual Studio 2010, luego de ello agregamos la referencia de la DLL del conector del MySQL para .net del siguiente modo:

Ahora que tenemos preparado el marco de trabajo con Visual Studio, vamos viendo la creación de la tabla en el MySQL:

CREATE DATABASE mysql_ifxperu;
CREATE TABLE `mysql_ifxperu`.`usuario` (
  `codigo` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `nombre` VARCHAR(45) NOT NULL,
  `apellido` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`codigo`)
)
ENGINE = InnoDB;

Base de datos creada y tabla lista para insertar datos:

Insert into usuario(codigo, nombre, apellido) values(1,'Clayder', 'Gonzalez');
Insert into usuario(codigo, nombre, apellido) values(2,'Will', 'Medina');
Insert into usuario(codigo, nombre, apellido) values(3,'Carlos', 'Cruz');
Insert into usuario(codigo, nombre, apellido) values(4,'Fredy', 'Guibert');
Insert into usuario(codigo, nombre, apellido) values(5,'Diego', 'Cueva');
Insert into usuario(codigo, nombre, apellido) values(6,'Juan', 'Noriega');
Insert into usuario(codigo, nombre, apellido) values(7,'Cesar', 'Pacherres');
Insert into usuario(codigo, nombre, apellido) values(8,'Ali', 'Lozano');

Verificamos los datos ingresados mediante un Select:

Select * from usuario;

Teniendo como respuesta:

Nuestra pequeña base de datos de editores de este Blog está lista, regresemos con Visual Studio a codificar:

using System;
using System.Text;
using MySql.Data.MySqlClient;

namespace MySQL_IFXPeru
{
    class Program
    {
        // Declaramos las variables:
        public static MySqlConnection MySqlCnn = new MySqlConnection();
        public static MySqlCommand MySqlCmd = new MySqlCommand();
        public static MySqlDataReader MySqlReader;
        public static string CadenaDeConexion;

        static void Main(string[] args)
        {
            Console.Title = " Powered by: IFXPERU - IFX Informatrix";
            CadenaDeConexion = "Server=localhost;"
                                + "Port=3307;"
                                + "Database=mysql_ifxperu;"
                                + "Uid=root;"
                                + "Password=";
            Conectar();
            Consulta();
            Desconectar();
            Console.ReadLine();
        }

        static void Conectar()
        {
            try
            {
                Console.WriteLine(CadenaDeConexion);
                MySqlCnn.ConnectionString = CadenaDeConexion;
                Console.WriteLine("\nConexión iniciada!\n");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        static void Desconectar()
        {
            // Cerramos la conexión
            MySqlCnn.Close();
            Console.WriteLine("\nConexión finalizada");
        }

        static void Consulta()
        {
            // Hacemos una conexión apartir del
            // string CadenaDeConexion antes asignado
            try
            {
                // Abrimos la conexión
                MySqlCnn.Open();
                // Definimos nuestro Query
                string consulta = "select * from usuario;";
                // Establecemos cuál será la conexión
                MySqlCmd.Connection = MySqlCnn;
                // Determinamos el comando [ nuestro query]
                MySqlCmd.CommandText = consulta; //Se le asigna la consulta
                // Asignamos al objeto MySqlReader la ejecución del comando
                // En otras palabras, el resultado de la consulta [query]
                // Se guardará en el MySqlReader
                MySqlReader = MySqlCmd.ExecuteReader();
                // Mostramos los resultados mientras haya datos para leer:
                while (MySqlReader.Read())
                {
                    // Empleamos el reader.FieldCount para obtener la cantidad
                    // de campos de la tabla solicitada
                    for (int i = 0; i < MySqlReader.FieldCount; i++)
                    {
                        // Reportamos medienta un Console.Write, de tal forma
                        // que recorra toda la fila, dejando un espacio:
                        Console.Write(MySqlReader[i] + " ");
                    }
                    Console.WriteLine("");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

Finalmente tenemos nuestro resultado:

Que tengan un buen día!