Mono y Mysql – parte 2

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.

perro

Ingeniero en Informática. Programador en PHP y Angular. Lo que mas adoro en el mundo es el conocimiento. Y el anime....y Japón...y el running...y bloguear claro y algunas otras cientos de cosas. Sigo buscando la manera de hacer mi primer millón.
guest
11 Comments
Inline Feedbacks
View all comments
trackback

Información Bitacoras.com…

Si lo deseas, puedes hacer click para valorar este post en Bitacoras.com. Gracias….

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

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??

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

angel

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

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