Haga su primer programa con C# Express Edition y SQL Server 2008 Express
Esta ayuda sirve para una persona con conocimientos básicos de C# y buenos conocimientos de programación sin importar que lenguaje haya usado. Espero comentarios por si algo no funciona.
Hacer un Diario Electrónico con C#
Pantalla Principal:
Debe tener instalado Visual C# Express Edition y SQL Server 2008 Express Edition
Crear un nuevo proyecto en C# y realizar los siguientes pasos:
En la pantalla que aparece a continuación adicionar todos los controles necesarios para que luzca igual que la muestra del inicio.
A continuación la estructura de la tabla a crear en SQL Server 2008:
Usted va a poder visualizar la información en un control datagridview y opcionalmente borrar. Explicación del primer tab:
Pulse doble click sobre el botón con el título "Add button"
Adicionar el siguiente código: Cambiar Server por el nombre de su equipo y la instancia de sql server instalada en su computador al igual del nombre de la base de datos (si aplica)
private void button2_Click(object sender, EventArgs e)
{
//We're going to use oledb to access data
StringBuilder sb = new StringBuilder();
System.Data.OleDb.OleDbConnection con;
con = new System.Data.OleDb.OleDbConnection(@"Provider=
SQLNCLI10;Server=JOHN_LAPTOP\SQLEXPRESS;Database=MyDiary; Trusted_Connection=yes;");
try
{
con.Open();
OleDbCommand dbcom = con.CreateCommand();
OleDbDataAdapter daMyData = new OleDbDataAdapter(dbcom);
if (con.State != ConnectionState.Open)
{
con.Close();
MessageBox.Show("Can't open data connection, please try again later", "Check parameters");
return;
}
sb.Append("insert into MyEvent(Eventdate,Eventtime,EventObjective) values('");
sb.Append(dateTimePicker1.Value.ToShortDateString());
sb.Append("','");
sb.Append(hour.Value.ToString());
sb.Append(":");
sb.Append(min.Value.ToString());
sb.Append("','");
sb.Append(textBox1.Text);
sb.Append("')");
dbcom.CommandText = sb.ToString();
dbcom.ExecuteNonQuery();
Fillgrid();
lbllastaction.Text = "Added New Event";
}
catch (Exception ex)
{
lbllastaction.Text = ex.Message;
MessageBox.Show(ex.Message);
}
}
Este código lee la información puesta en los controles y adiciona un nuevo registro en la tabla dbo.MyEvent
Por favor verifique que los nombres de cada objeto sean iguales a los nombres que usa en el código, de lo contrario no va a compilar. O cambielos según su necesidad.
Código para el botón titulado "See Events List"
private void button3_Click(object sender, EventArgs e)
{
tabControl1.SelectTab("tabpage2");
StringBuilder sb = new StringBuilder();
System.Data.OleDb.OleDbConnection con;
con = new System.Data.OleDb.OleDbConnection(@"Provider=
SQLNCLI10;Server=JOHN_LAPTOP\SQLEXPRESS;Database=MyDiary; Trusted_Connection=yes;");
try
{
con.Open();
OleDbCommand dbcom = con.CreateCommand();
OleDbDataAdapter daMyData = new OleDbDataAdapter(dbcom);
if (con.State != ConnectionState.Open)
{
con.Close();
MessageBox.Show("Can't open data connection, please try again later", "Check parameters");
return;
}
sb.Append("select * from MyEvent order by idnumber desc");
dbcom.CommandText = sb.ToString();
dt.Clear();
daMyData.Fill(dt);
dgv1.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
A partir de este código vamos a generar una nueva función llamada Fillgrid() para que llene el grid cuando pulsamos ese botón o para cuando el usuario da click en el tab2.
Seleccione el código desde "stringbuilder sb... hasta catch { }", pulse click derecho y escoja la opción "Refactorizar", luego "Extraer método", escriba como nombre "Fillgrid", esto va a crear un nuevo método llamado: "Private void Fillgrid()"
Para que el datagridview funcione necesitamos crear un datatable. Para tener este lo vamos a crear en el inicio para que tenga funcionalidad en todo el proyecto. Ubique al inicio del código lo siguiente:
namespace MyDiary
{
public partial class Form1 : Form
{
DataTable dt = new DataTable();
//<---add here this line to let program see dt globally
public Form1()
{
InitializeComponent();
hour.Value = System.DateTime.Now.Hour;
//<--- puede adicionar esto para que se llene la hora y minutos al ejecutar la forma
min.Value = System.DateTime.Now.Minute;
} ... resto del código.....
Busque ahora en el tabpage2 el método Enter y adicione este código:
private void tabPage2_Enter(object sender, EventArgs e)
{
Fillgrid();
}
Para hacerlo dele click al tabpage 2 abajo de donde haya añadido el datagridview y
busque en la ventana de propiedades el rayito que simboliza los métodos,
lo ubica y le dá doble click.
Ahora borre la línea "Fillgrid();" del button3 porque ya no se va a necesitar.
Que quede solo lo tabcontrol1.selecttab("tabpage2");
private void button3_Click(object sender, EventArgs e)
{
tabControl1.SelectTab("tabpage2");
Fillgrid(); //<--delete this line, now when entering to tabpage2 it will populate the grid automatically
}
Code for delete button:
private void button1_Click_1(object sender, EventArgs e)
{
string sid = dt.Rows[dgv1.CurrentRow.Index]
["idnumber"].ToString();
if (sid.Length > 0)
{
StringBuilder sb = new StringBuilder();
System.Data.OleDb.OleDbConnection con;
con = new System.Data.OleDb.OleDbConnection(@"Provider=
SQLNCLI10;Server=JOHN_LAPTOP\SQLEXPRESS;
Database=MyDiary; Trusted_Connection=yes;");
try
{
con.Open();
OleDbCommand dbcom = con.CreateCommand();
OleDbDataAdapter daMyData = new OleDbDataAdapter(dbcom);
if (con.State != ConnectionState.Open)
{
con.Close();
MessageBox.Show("No se puede abrir la conexion,
intente luego", "Verifique parametros");Este código borra el registro que está seleccionado y hace un refresh del grid.
return;
}
sb.Append("delete from MyEvent where idnumber='");
sb.Append(sid);
sb.Append("'");
dbcom.CommandText = sb.ToString();
dbcom.ExecuteNonQuery();
Fillgrid();
lbllastaction.Text = "Deleted Event with idnumber=" + sid;
}
catch (Exception ex)
{
lbllastaction.Text = ex.Message;
MessageBox.Show(ex.Message);
}
}
}
Siendo esta mi primera entrega para desarrollo de aplicaciones usando C# Express Edition, espero comentarios para poder mejorar la próxima entrega.
John Harold.
Comentarios