Bueno vamos a seguir con este mini tutorial sobre como conectar mono y mysql.

Supongo que si estan leyendo este post es porque ya leyeron Mono y Mysql - parte 1. Donde habiamos creado la interfaz grafica y la base de datos.

Ahora vamos a continuar con el codigo, se van a MainWidow.cs , antes del procedimiento MainWindow creamos un objeto para la conexion:

IDbConnection conn;

y dentro del procedimiento MainWindow y luego de Build() debemos escribir los datos para conectarnos a la base de datos:

conn = new MySqlConnection(“Server=localhost;” + “Database=marcadores;” + “User ID=root;” + “Password=songoku;” + “Pooling=false” );


luego con el siguiente codigo ponemos los titulos de las columnas del treeviwe:

treeview.AppendColumn(“Id”, new Gtk.CellRendererText(), “text”, 0); treeview.AppendColumn(“Nombre”, new Gtk.CellRendererText(), “text”, 1); treeview.AppendColumn(“Apellido”, new Gtk.CellRendererText(), “text”, 2);

Luego lo que necesitamos es un procedimiento que podamos llamar siempre y que nos sirva para cargar los datos de la base de datos en nuestro treeview, entonces creamos un nuevo procedimiento debajo de MainWindow al que llamaremos “treeview_load()” que tendra el siguiente codigo:

protected void treeview_load() { conn.Open();

Gtk.ListStore listUrls = new Gtk.ListStore (typeof(int), typeof(string), typeof(string)); treeview.Model = listUrls;

IDbCommand comando = conn.CreateCommand();

string strSQL = “SELECT id, titulo, url FROM favoritos;"; comando.CommandText = strSQL;

IDataReader dr = comando.ExecuteReader();

while (dr.Read()) { listUrls.AppendValues(dr[“id”], dr[“titulo”].ToString(), dr[“url”].ToString()); } dr.Close(); conn.Close(); }

Este procedimiento lo llamaremos seguido, por ejemplo lo agregamos al MainWindow y luego de agregar o eliminar algun registro.

Veamos ahora el codigo del boton cargar, es bastante sencillo realmente, si vieron lo anterior sera muy sencillo:

protected virtual void OnBtnAgregarClicked (object sender, System.EventArgs e) { IDbCommand comando = conn.CreateCommand();

conn.Open();

string strSQL = “INSERT INTO favoritos(titulo,url) VALUES ('” + txtTitulo.Text + “','” + txtUrl.Text + “')"; comando.CommandText = strSQL; comando.ExecuteNonQuery(); conn.Close();

treeview_load(); }

Y el del boton borrar no tiene mayor ciencia:

protected virtual void OnBtnBorrarClicked (object sender, System.EventArgs e) { IDbCommand comando = conn.CreateCommand();

conn.Open();

string strSQL = “DELETE FROM favoritos WHERE id = " + txtId.Text ; comando.CommandText = strSQL; comando.ExecuteNonQuery(); conn.Close();

treeview_load(); }

Con eso ya deberia andar, compilen y prueben, aqui les dejo un zip con todo el proyecto por si les quedan dudas, esta todo muy bien comentado asi que no tendran problemas para enterderlo, pero de todas formas si les surge alguna duda me la preguntan aqui. Saludos.