Mono con MySQL

Hace un tiempo, di mis primeros pasos en Mono, con el desarrollo de unos programas muy básicos en Mono, que no iban mucho más allá del Hola Mundo.

Con dar unos pasos más en mi intrusión con Mono, en esta ocasión desarrollaré una aplicación básica, capaz de hacer altas y bajas en una base de datos MySQL.

[CODE]
$ tar -xvzf mysql.tar.gz
README
MySql.Data.dll
$ cat README
Descomprimir la .dll en alguna carpeta y correr el siguiente comando:
$ gacutil -i MySql.Data.dll
Y linkear desde monodevelop deacuerdo al tutorial en http://antoniomtz.org

$ sudo gacutil -i MySql.Data.dll
MySql.Data installed into the gac (/usr/lib/mono/gac)
$
[/CODE]


[CSHARP]
// Main.cs created with MonoDevelop
// User: luciano
//
using System;
using Gtk;
using System.Data;
using MySql.Data.MySqlClient;
[/CSHARP]


[MYSQL]
CREATE TABLE `usuarios` (
`id` int(10) NOT NULL,
`nombre` varchar(150) NOT NULL,
`apellidos` varchar(200) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
[/MYSQL]


[CSHARP]
using System;
using Gtk;
using System.Data;
using MySql.Data.MySqlClient;

public partial class MainWindow: Gtk.Window
{
IDbConnection conn;

public MainWindow (): base (Gtk.WindowType.Toplevel)
{
Build ();

conn = new MySqlConnection("Server=localhost;" +
"Database=test;" +
"User ID=usuario;" +
"Password=contrasena;" +
"Pooling=false"
);

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

treeview_load();
}

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

Gtk.ListStore liststoreUsuarios = new Gtk.ListStore (typeof(int), typeof(string), typeof(string));

treeview.Model = liststoreUsuarios;
IDbCommand comando = conn.CreateCommand();

string strSQL = "SELECT id, nombre, apellidos FROM usuarios;";
comando.CommandText = strSQL;
IDataReader dr = comando.ExecuteReader();

while (dr.Read())
{
liststoreUsuarios.AppendValues(dr["id"], dr["nombre"].ToString(), dr["apellidos"].ToString());
}
dr.Close();
conn.Close();

}

protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
Application.Quit ();
a.RetVal = true;
}

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

conn.Open();

string strSQL = "INSERT INTO usuarios VALUES (" + textId.Text + ",'" + textNombre.Text + "','" + textApellidos.Text + "')";
comando.CommandText = strSQL;
comando.ExecuteNonQuery();
conn.Close();

treeview_load();
}

protected virtual void OnTreeviewCursorChanged (object sender, System.EventArgs e)
{
Gtk.TreeModel modelo;
Gtk.TreeIter iterSelected;

if ( treeview.Selection.GetSelected(out modelo, out iterSelected) )
{
textIdEliminar.Text = (string) modelo.GetValue(iterSelected,0).ToString();
}

}

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

conn.Open();

string strSQL = "DELETE FROM usuarios WHERE id = " + textIdEliminar.Text ;
comando.CommandText = strSQL;
comando.ExecuteNonQuery();
conn.Close();

treeview_load();
}

}
[/CSHARP]

Basado en la publicación original de Noticias, Eventos y mucho mas de SOFTWARE LIBRE

Tags: ,


Leave a Reply

Your email address will not be published. Required fields are marked *