
Introducción
Ya que no hay demasiado documentación de Mono en la red y creo que es una alternativa muy válida para muchos proyectos, voy a seguir publicando más tutoriales y tips sobre este tema.
Mi intención hoy es comentar cómo referenciar el conector de MySQL dentro de un proyecto de Mono con MonoDevelop, de forma que podamos utilizarlo con la arquitectura y las funcionalidades de ADO.NET para manejar datos con un servidor de base de datos MySQL. El conector os valdrá tanto para aplicaciones web como locales.
Si no conocéis ADO.NET os recomiendo que os leáis el artículo al que os referencio de la Wikipedia porque realmente es una arquitectura muy útil para el manejo de datos, aunque los más puristas la rechazarán por venir de Microsoft.
Instalación
Lo primero será estar seguros de que tenemos instalados Mono, MonoDevelop y que tenemos a nuestro alcance un servidor de MySQL al que conectarnos. Si no lo tenéis instalados podéis instarlo prácticamente seguro desde vuestro gestor de paquetes y en todo caso, desde la web oficial del Proyecto Mono. Una vez hecho esto descargaremos el conector desde este enlace en la web de MySQL. Elegimos la plataforma: “.NET & Mono”. Se os descargará un fichero dll con los ensamblados correspondientes.

Referencia dentro de un proyecto
Ahora nos dirigimos a Mono Develop y creamos una solución nueva (da igual si de consola o GTK#). Al crearse la solución nos dirigimos a las Referencias del proyecto y desde allí importamos el ensamblado. Para ello seleccionáis “Editar referencias…”. De las tres opciones que aparecen en el diálogo entramos en “Ensamblado .NET”, elegimos el fichero dll que acabamos de descargar y lo añadimos.
Prueba
Para terminar vamos a probar que todo está bien. En el Main.cs vamos a implementar el típico ¡Hola Mundo!, añadiéndole al comienzo una referencia al conector. Si compila correctamente hemos llegado a nuestro objetivo.
using System;
using MySql.Data.MySqlClient;
namespace ejemplo_mono_ado
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
En un futuro post explicaré más sobre el uso y la potencia de esta herramienta.


La posibilidad de generar valores automáticos para nuestras claves primarias gracias a la propiedad: AUTO_INCREMENT presente en muchos sistemas gestores de bases de datos modernos, es además de cómodo, seguro para quien lo implementa.
Sin embargo, en caso de borrar todos los datos de una tabla y volver a introducirlos, el valor del campo con AUTO_INCREMENT activado, en lugar de empezar desde 1, seguirá con la cuenta anterior. Esto es un detalle sin mucha importancia en algunos casos, pero que en algunas implementaciones puede dar problemas. Imaginemos una tabla con 10 registros con valores para su clave primaria numérica comprendidos entre 65 y 74. Sería por lo menos raro.
¿Cómo solucionarlo en MySQL? Simplemente deberemos ejecutar:
ALTER TABLE nombre_tabla AUTO_INCREMENT = 1
Y este problema habrá desaparecido. Si queréis optar por rellenar los valores “a mano” siempre os quedará la posibilidad de indicar el valor del campo de forma explícita, aunque sea un valor que se auto incremente.
Es un problema con el que cualquier persona que utilice PHP y MySQL se encuentra muy a menudo. Hasta que PHP no trate directamente esos datos y se sobrecarguen internamente los operadores de comparación para que todo sea directo, tendremos que valernos de métodos como el que os muestro para poder comparar dos fechas en formato MySQL con PHP (formato MySQL, es decir fecha en formato inglés con guiones y el orden invertido respecto al nuestro).
La siguiente función devuelve:
- 1 si la fecha a es mayor que la fecha b
- 0 si son iguales
- -1 si la fecha a es menor que la fecha b
function comparar_fechas_mysql($a, $b)
{
$a_v=explode("-",$a);
$anyo_a = $a_v[0];
$mes_a = $a_v[1];
$dia_a = $a_v[2];
$b_v=explode("-",$b);
$anyo_b = $b_v[0];
$mes_b = $b_v[1];
$dia_b = $b_v[2];
if($anyo_a > $anyo_b)
return 1;
else
{
if($anyo_a < $anyo_b)
return -1;
else
{
if($mes_a > $mes_b)
return 1;
else
{
if($mes_a < $mes_b)
return -1;
else
{
if($dia_a > $dia_b)
return 1;
else
{
if($dia_a < $dia_b)
return -1;
else
return 0;
}
}
}
}
}
}
Esperamos vuestras sugerencias, mejoras y rectificaciones de este y todos los tips de programación que vayamos incorporando.
Hacer una copia de seguridad a tu Base de Datos es una tarea de administración obligatoria para mantener tu información resguardada. MySQL te permite realizar esta sencilla tarea con el comando mysqldump. Instalado MySQL y teniendo tu base de datos, entra en la terminal de consola, y ejecuta lo siguiente:
Sintaxis:
mysqldump --add-drop-table -h servidor -u usuario -p basededatos > nombreCopia.sql
Ejemplo:
mysqldump --add-drop-table -h localhost -u root -p empleados > backup.sql
A continuación te pedirá la contraseña, la introduces, esperas un poco y ¡listo!
Para importar una base de datos es muy sencillo:
Sintaxis:
mysql -h servidor -u usuario -p basededatos < nombreCopia.sql
Ejemplo:
mysql -h localhost -u root -p empleados < backup.sql
Para instalar MySQL, ejecuta desde el terminal de consola:
sudo apt-get install mysql-server
Para comprobar que funciona perfectamente ejecuta
sudo mysql -u root -p
La contraseña será la misma que has definido para el administrador en GNU/Linux (root@localhost).
Entrando como administrador ya puedes crear los usuarios, tablas y bases de datos necesarias.
Por último, si vas a usar MySQL con PHP necesitas instalar el módulo correspondiente, para ello ejecuta:
sudo apt-get install php5-mysql