miércoles, 24 de octubre de 2012

[C#] Realizar una conexión con MYSQL

 

Introducción

Una tarea muy sencilla, pero que se convierte en una piedra en el zapato para los que comenzamos a desarrollar sistemas de información, es la de realizar una conexión correctamente con una base de datos (en este caso mysql) y ejecutar algunas sentencias.

 

Que es una conexión a base de datos y para que se utiliza ?

Una conexión es como una clase de puente que realizamos desde nuestro lenguaje de programación hasta una base de datos, y se utiliza para acceder a ciertos recursos que nos provee el motor de base de datos, estos recursos entre otras cosas son poder ejecutar sentencias de algún tipo.

Para poder acceder a un motor de bases de datos necesitamos autenticarnos, entonces uno de los primeros pasos será crear unas credenciales con suficientes permisos para ejecutar sentencias !

 

Creamos la base de datos

  • Ingresamos a la consola de mysql con el usuario root (que es el administrador que definimos en el momento de la configuración del motor):

Untitled

Y ejecutamos esta sentencia para crear una base de datos de prueba:

CREATE DATABASE Prueba  


 


Untitled


 


Poniendo en uso la base de datos


Para que nuestros comandos se apliquen a una base de datos en especifico, debemos de usar la intrucción USE, que basicamente lo que hace es definir la base de datos que queremos usar:


USE Prueba;

 


Crear la tabla


Para hacer el ejemplo mas completo, vamos a crear una tabla de prueba llamada Empleados y le adicionamos algunos registros:

CREATE TABLE Empleados (IdEmpleado INT AUTO_INCREMENT, Nombres VARCHAR(50), Apellidos VARCHAR(50), Correo VARCHAR(50), Telefono VARCHAR(50),  PRIMARY KEY (IdEmpleado ));

INSERT INTO Empleados (Nombres, Apellidos, Correo, Telefono) VALUES ('Aquiles', 'Brinco', 'aquilesbrinco@outlook.com', '4010068');
INSERT INTO Empleados (Nombres, Apellidos, Correo, Telefono) VALUES ('Armando', 'Casas', 'armandocasas@outlook.com', '64681684');
INSERT INTO Empleados (Nombres, Apellidos, Correo, Telefono) VALUES ('Débora', 'Melo', 'deboramelo@outlook.com', '651674');
INSERT INTO Empleados (Nombres, Apellidos, Correo, Telefono) VALUES ('Elsa', 'Pato', 'elsapato@outlook.com', '698541488');
INSERT INTO Empleados (Nombres, Apellidos, Correo, Telefono) VALUES ('Susana', 'Oria', 'susanaoria@outlook.com', '546654651654');
INSERT INTO Empleados (Nombres, Apellidos, Correo, Telefono) VALUES ('Aquiles', 'Bailo', 'aquilesbailo@outlook.com', '5465465465');
INSERT INTO Empleados (Nombres, Apellidos, Correo, Telefono) VALUES ('Elvio', 'Lao', 'elviolao@outlook.com', '301864546');
INSERT INTO Empleados (Nombres, Apellidos, Correo, Telefono) VALUES ('Elva', 'Gina', 'elvagina@outlook.com', '654687486');
INSERT INTO Empleados (Nombres, Apellidos, Correo, Telefono) VALUES ('Elmer', 'Curio', 'elmercurio@outlook.com', '3017768305');


Para visualizar nuestra información, basta con hacer un select a la tabla desde la consola:



SELECT     IdEmpleado, Nombres, Apellidos, Correo, Telefono
FROM Empleados


 


Untitled


 

Descargar el conector

Para poder realizar la conexión necesitamos de un conector o driver ofrecido por mysql, este lo podemos descargar desde está dirección:

Download Connector/Net

Para este caso puntual, aconsejo que descargen

Windows (x86, 32-bit), MSI Installer

Lo instalamos (next, typical, install) ya que posteriormente vamos a utilizar un archivo de este conector.

Untitled

 

Crear string de conexión

Una pregunta muy realizada, es cómo crear el string de conexión; es decir, en que orden debe de ir el usuario, la base de datos, la clave, etc para poder conectarme.

La manera correcta es la siguiente:

server=""; user=""; password=""; database=""

Dentro de las comillas va la respectiva información, en nuestro caso puntual:

server=localhost; user=root; password=a54321; database=Prueba

 

Realizar la conexión desde el lenguaje de programación (C#)

Una vez hayamos cumplido los pasos anteriores, nos disponemos a crear un proyecto de tipo Consola en Visual Studio.

Untitled

Clic en Ok.

 

Referenciando el conector de mysql

El paso a seguir, es agregar una referencia de mysql a nuestro proyecto, para lograrlo, hacemos clic derecho sobre la carpeta referencias de nuestro proyecto y seleccionamos Add reference:

Untitled

En la pestaña Browse, buscamos la ruta donde se instalo el driver de mysql (en mi caso C:\Program Files (x86)\MySQL\MySQL Installer) y seleccionamos la dll con el nombre MySql.Data.dll:

Untitled

Clic en el botón Ok.

Verificamos que la referencia se haya realizado correctamente:

Untitled

Ah, no se nos puede olvidar referenciar nuestra dll desde código con:


using MySql.Data.MySqlClient;

Con eso, ya podemos utilizar todas las clases para acceso a datos ofrecidas por mysql.

 

Accediendo a la base de datos

En el Mein ingresamos el siguiente código:



      static void Main(string[] args)
{
var ConnectionString = @"server=localhost; user=root; password=a54321; database=Prueba";
using (MySqlConnection con = new MySqlConnection(ConnectionString))
{
con.Open();
using (MySqlCommand Command = new MySqlCommand("SELECT IdEmpleado, Nombres, Apellidos, Correo, Telefono FROM Empleados", con))
using (MySqlDataReader Reader = Command.ExecuteReader())
{
while (Reader.Read())
{
Console.WriteLine("{0} - {1} - {2} - {3} - {4}",
Reader.GetInt32(0), Reader.GetString(1), Reader.GetString(2), Reader.GetString(3), Reader.GetString(4));
}
}
}
Console.ReadKey();
}


 


Estamos llendo a base de datos y ejecutando la siguiente sentencia:


 



SELECT     IdEmpleado, Nombres, Apellidos, Correo, Telefono
FROM Empleados


Recuperamos lo que nos retornó la consulta y lo lo visualizamos en la consola:

Untitled

De esa misma manera podemos ejecutar nuestras instrucciones INSERT, UPDATE, DELETED para realizar cualquier tipo de operación a la información !!!!

 

Código

Desde el siguiente link, pueden descargarse el ejemplo realizado con Visual Studio 2010 y Mysql 5.5.

Descargar código !

3 comentarios:

  1. Excelente amigo, gracias estaba creando una base de datos y estaba batallando para llamarla, de verdad que si es una lata si no se hace correctamente :/

    ResponderEliminar
    Respuestas
    1. Hola Luis Karma,
      Me alegro por que pudiste realizar la conexión, si tienes alguna duda adicional me cuentas.
      Un saludo,
      Cristian Pérez.

      Eliminar
  2. excelente no busque mucho para aprender algo tan sencillo, ahora bien el siguiente nivel
    gracias...!!

    ResponderEliminar