Trabajando con C# y MySQL en Mono y Monodevelop

Últimamente me ha dado por ponerme un poco al día en C#, y es que la noticia de que Micrososft haya liberado el framework ASP.NET MVC bajo licencia MS-PL, es decir, como software libre, me ha motivado bastante para ponerme con esta tecnología. Pero antes de entrar al trapo con ASP.NET MVC, he querido echar un vistazo a las alternativas de BBDD de las que disponía para programar con Mono en Linux.

Después de mirar los diferentes SGBD de que disponía decidí quedarme con MySQL, porque que estoy muy familiarizado ya que en PHP casi siempre me ha tocado usar esta base de datos. Postgre SQL me ha parecido me ha parecido una alternativa muy buena a MySQL, sobre todo después de la incertidumbre que se me ha generado después de la compra de Sun por parte de Oracle.

Para conectar con MySQL desde .NET lo primero que hay que hacer es bajarse el conector desde el sitio web de MySQL. Yo he bajado la versión 5.2, aunque ya van por la 6.0. Bajaros el que pone “Windows Binaries, no installer ”, estos son los binarios compilados para Windows del conector,es decir, el ensamblado, o dll, como quieras llamarlo.

No te asustes, que aunque estén compilados para Windows, Mono es compatible con estos binarios.

Una vez descargado el fichero lo descomprimes y lo que nos interesa es el directorio «bin», donde se encuentra la dll del conector.

Ahora hay que instalar el ensamblado en la caché de ensamblados global de Mono, esto se hace con la utilidad gacutil, para ello usamos el comando:

sudo gacutil -i MySql.Data.dll

Se supone que se ha descomprimido el paquete del conector y se tiene acceso al directorio bin, donde se encuentra el fichero MySql.Data.dll.

Ahora ya se encuentra instalado el ensamblado en el entorno Mono.

Lo siguiente es abrir monodevelop y crear un nuevo proyecto, yo lo he creado de consola. Hace poco escribí un post donde puse un vídeo con el proceso de instalación de monodevelop en Suse Linux 11.1, por si te lías con la instalación.

Crear un proyecto de consola en Monodevelop
Crear un proyecto de consola en Monodevelop

Ahora pinchamos con el botón derecho del ratón sobre el directorio Referencias->Editar Referencias.

Agregar referencia a System.Data
Agregar referencia a System.Data

Hay que agregar el ensamblado del conector que acabamos de descargar y una referencia a la librería System.Data de .NET para trabajar con bases de datos.

Agregar el ensamblado del conector MySQL en Monodevelop
Agregar el ensamblado del conector MySQL en Monodevelop

Ahora ya podemos comenzar a programar usando el conector de MySQL desde Mono. Yo he creado una base de datos llamada «NET» y he creado una tabla dentro de ella, a continuación pongo el código SQL necesario para crear la tabla.

CREATE DATABASE `NET` ;
CREATE TABLE `NET`.`miTabla` (
`id` INT NOT NULL AUTO_INCREMENT ,
`cuerpo` VARCHAR( 300 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;
INSERT INTO `NET`.`miTabla` (
`id` ,
`cuerpo`
)
VALUES (
NULL , 'datos de prueba, 1'
), (
NULL , 'más datos de prueba, 2'
);

El ejemplo que he creado es muy simple, uso un Reader para obtener los datos de la tabla, lo recorro y lo imprimo por la pantalla.

A continuación pongo el código.

using System;
using System.Data;
using MySql.Data.MySqlClient;
namespace pruebaMySQL
{
	class MainClass
	{
		public static void Main(string[] args)
		{
			string connectionString = "Server=localhost;Database=NET;User ID=root;Password=;Pooling=false;";
  			MySqlConnection conn = new MySqlConnection(connectionString);

        	string query = "SELECT id,cuerpo FROM miTabla";

			conn.Open();

           MySqlCommand myCommand = new MySqlCommand(query, conn);
           MySqlDataReader myReader = myCommand.ExecuteReader();

           while (myReader.Read())
           {
			Console.Write("El ID es: " + myReader["id"].ToString());
			Console.WriteLine("  El cuerpo es: " + myReader["cuerpo"].ToString());

           }
           myReader.Close();
           myCommand.Dispose();
           conn.Close();
		}
	}
}

Se han añadido los espacios de nombres a : System.Data y MySql.Data.MySqlClient, necesarios para trabajar con el conector de MySQL sin tener que estar poniendo siempre la ruta completa de cada objeto.

En la connectionString se ha de poner la cadena con este formato siempre a piñón fijo, sustituyendo los valores dependiendo del servidor y base de datos que quieras consultar. En el objeto myReader se almacena el resultado de la consulta, que se ejecuta con el método ExecuteReader del objeto mySqlCommand, que a su vez necesita una conexión con el servidor (objeto mySqlConnection) y una string que contenga la consulta SQL que se desea realizar (query). Como se puede comprobar es muy sencillo.

Es importante cerrar el reader con el método Close, ejecutar el método Dispose del objeto myCommand para liberar memoria, y cerrar la conexión (objeto conn) con el método Close, para cerrar el socket con el servidor de MySQL y colapsarlo.

Por último, pulsamos F5 y …

Ejecución del programa
Ejecución del programa

Compartir:
Abrir chat
¿Tienes alguna duda que podamos aclarar?