Mono y Mysql – parte 2

Escrito por:

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.

Post similares:

  • Pingback: Bitacoras.com

  • angel

    hola gracias muy interesante lo estaba haciendo y siguiendo los pasos pero sabes me salen dos errores:

    error CS0103: The name `txtTitulo’ does not exist in the current context
    error CS0103: The name `txtId’ does not exist in the current context

    espero me puedas ayudar gracias

    • http://blogjapon.com.ar perro

      y eso lo definimos en la primera parte del tutorial
      http://paraisolinux.com/mono-y-mysql-parte-1/
      son los nombres de las cajas de texto

      • angel

        Hola gracias por contestar, si lo vi pero igual me salen esos errores, sera que tengo q ponerlos con mayusculas como VRL, ID, Titulo??

        • http://blogjapon.com.ar perro

          O sea. El campo tiene que llamarse txtTitulo asi tal cual como te da el error.

  • angel

    otra cosa si me puedes contestar porfavor, haciendo la interfaz grafica se tiene que unir mediante algo al codigo, o lo hace automaticamente?? soy nuevo en esto espero me respondas sale gracias

    • http://blogjapon.com.ar perro

      Esta si que no te la puedo responder porque no me acuerdo. La verdad cuando yo programaba en mono no habia que hacer nada. Supongo que ahora tampoco hay que hacer nada.

  • angel

    OMG!! ya me saliO!!! yupi jaja mil horas sacando ese error LOL! muchas gracias!!! te la debo kieres algo jjajaja

    • http://blogjapon.com.ar perro

      jaja…me alegra que lo hayas logrado :) no quiero nada :penguin:

  • daniel forero

    saludos.

    tu tutoría me ha ayudado pero necesito un na ayuda para cargar una consulta mysql en un combobox. lo he intentado pero la propiedad datasource no aparece, he intentantado con un datareader pero sigo sin poder ver mi datos .
    de antemano les agradesco cualquier ayuda.

    posdata
    uso monodevelop 2.4 y C# en ubuntu 10.10

    • http://blogjapon.com.ar perro

      pues no puedo ayudarte porque hace mucho que no lo uso y ya no recuerdo como manejarlo :P