Hola amigos, tuve la oportunidad de navegar por internet y encontré esto:
http://develmono.blogspot.com/2009/03/c ... velop.html
se los transcribo aquí para los que como yo solo vemos la internet muy lejano en el tiempo
Hola a todos aquellos que lean este blog ojala que se unan mas personas a los seguidores como dije en la primera entrada colocaremos cosas deverdad valiosas para aquellos que gusten de la programacion en .net y por sobre todo quienes quieran voltear al lado del Open source.
Tema: Como conectarse a un servidor SQL y Obtener un Data Grid de ello.
Antes que nada debemos Tener listo nuestro entorno de desarrollo en este caso Mono develop V 1.0 o 2.0 alpha (Esta de maravilla).
Y ahora comenzemos.
Hiba yo a escribir n cantidad de cosas referentes a las librerias al momento que en mono project lleva la plataforma .net framework a SO no windows pero este link lo dice mucho mejor de lo que yo lo pudiera describir asi que por favor leanlo y nosotros vamos a lo nuestro.
Utilizaremos un proyecto del tipo GTK# con un formulario simple para contruir nuestr aplicacion.
En este proyecto de nombre:ConexionSqlServer utilizaremos los siguientes controles en la ventana pricipal.
Gtk.Fixed Conten;
Gtk.Label LbTitle;
Gtk.Fixed fixed2;
Gtk.Button btnexecute;
Gtk.Entry txtsrv;
Gtk.Entry txtdb;
Gtk.Label label2;
Gtk.Label label3;
Gtk.Label label4;
Gtk.Label label5;
Gtk.Entry txtusr;
Gtk.Entry txtpass;
Gtk.Entry txtsrt;
Gtk.Entry txterror;
Todos estos controles disponibles desde la barra de herramientas principal,teniendo como resultado la siguiente ventana. (o algo similar esperemos).
Una vez diseñado nuestro entorno Visual vallamos al codigo, utilizaremos una funcion privada de nuestra ventana principal que sera quien ejecute y devuelva nuestro dataset para poder implementar un datagird.
Código: Seleccionar todo
private Boolean FcnDevuelveDataSet(string str,ref System.Data.DataSet SeteDb)
{
//Cadena De conexion creada atravez de los parametros del form
String cstring="Data Source=" + txtsrv.Text + ";Initial Catalog=" + txtdb.Text + ";Persist Security Info=False;User ID=" + txtusr.Text + ";PASSWORD=" + txtpass.Text;
System.Data.SqlClient.SqlDataAdapter exec = new
System.Data.SqlClient.SqlDataAdapter();
System.Data.SqlClient.SqlConnection cnns = default(System.Data.SqlClient.SqlConnection);
if (string.IsNullOrEmpty(str))
{
txterror.Text="Query Invalid";
return false;
}
try {
SeteDb = new System.Data.DataSet();
cnns = new System.Data.SqlClient.SqlConnection(cstring);
cnns.Open();
exec = new System.Data.SqlClient.SqlDataAdapter(str, cnns);
//ejecuta el query
exec.Fill(SeteDb);
// llena el dataset
try {
cnns.Dispose();
}
catch (Exception ex) {
txterror.Text = "Error :" + ex.Message;
}
return true;
}
catch (Exception ex)
{
txterror.Text = "Error :" + ex.Message;
try
{
cnns.Dispose();
}
catch
{
}
return false;
}
}
De esta manera tendremos una funcion que reciba un query y devuelva el ersultado de un consulta en una variable del tipo dataset.
Notara que es exactamente las mismas librerias conceptos tipos y clases que si utilizaran el system de microsoft solo que en el proximo post les dire cual es la diferencia de estas librerias.
Con esta funcion diriamos "que aburrido este post eso tal vez ya lo sabia" la parte magica viene a continuacion. EL DATA GRID
Como tal no existe un datagrid para gtk# predifinido de echo se construlle las vistas de grid view basadas en un control Treeview (visiten este link).
Si revisaron ese link anterior se daran cuenta que construir el grid row by row asi como las estructuras de columnas seria demasiado lento.
Mucha gente al rededor del mundo se ha dado a la tarea de construir la siguiente clase que puede seer implemetada facilmente como un datagrid soportando las propiedades datasource y binding.
La clase la pueden desacargar de este link
y una vez descargado la cls Datagrid.cs
Implementando el control dataGrid.
Código: Seleccionar todo
private ConexionSqlServer.DataGrid Grid;
//data Grid
this.Grid= new ConexionSqlServer.DataGrid();
this.Grid.Name="Grid";
this.Grid.SetSizeRequest(500,220);
this.Conten.Add(this.Grid);
Gtk.Fixed.FixedChild w15 = ((Gtk.Fixed.FixedChild)(this.Conten[this.Grid]));
w15.X = 33;
w15.Y = 250;
Lo cual agregara el control Datagrid dentro de nuestro formulario principal.
Por ultimo nuestra funcion Onclik de implementacion.
Código: Seleccionar todo
protected virtual void OnBtnexecuteClicked (object sender, System.EventArgs e)
{
System.Data.DataSet sete=null;
if (ValidaDatos())
{
FcnDevuelveDataSet(txtsrt.Text,ref sete);
if (sete.Tables.Count!=0)
{
Grid.DataSource=sete.Tables[0];
Grid.DataBind();
}
else
{
Grid.DataSource=null;
//Grid.DataBind();
}
}
}
Obteniendo nuestro pkño sql query
.
Bueno para todos aquellos que han llegado a este punto del post muchas felicidades tienen ahora una aplicacion de conexion a sql server desde una plataforma libre monodevelop la cual podran enpaquetar para usar en cualquier SO .
Si tienen dudas o si quieren el codigo fuente de la aplicacion escribambe o unanse al Blog.
Mi correo
chavallb@gmail.com. un saludo y bye
Recuerden dibulguen el blog para lograr un mejor aprendizaje y
"FELICEZ CLASES.CS"
Publicado 18th March 2009 por Memo Chavez