2.- Crear una base de datos, dentro de la cual debe de tener una tabla que se llame EMPLEADOS. Los nombres de las tablas en MySQL solo se permiten en minúsculas, por lo cual no se esfuercen en tratar de forzar el administrador de base de datos preferido (MySQL Workbench, phpMyAdmin, etc.).
Tabla empleados. Vista desde MySQL Workbench. Click para expandir. |
Forma en Visual Studio 2012. El círculo rojo muestra la referencia para poder utilizar el ensambaje de MySQL. |
4.- Manos a la obra!... mejor dicho... Manos al código. El listado completo aquí y comentado!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data; //1.- Agregar la referencia de las librerías de MySql
using MySql.Data.MySqlClient;
namespace ejemploMysql
{
public partial class Form2 : Form
{
//Atributos que vamos a utilizar dentro de nuestra forma.
private string servidor = "localhost";
private string baseDatos = "practicaunipoli";
private string usuario = "root";
private string password = "";
private string idEmpleado;
private string nomEmpleado;
private string emEmpleado;
private bool bandera = false; //Se utiliza para jugarle rudo al datagridview!
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
this.TraerDatos(); //Método que se emplea para generar la consulta de los datos.
//Modificamos los encabezados de nuestro datagridview llamado dgvEmpleados.
dgvEmpleados.Columns[0].HeaderText = "ID";
dgvEmpleados.Columns[1].HeaderText = "NOMBRE";
dgvEmpleados.Columns[2].HeaderText = "E-MAIL";
//Agregamos dos columnas tipo botón, para realizar acciones de editar y borrar!
DataGridViewButtonColumn colEditar = new DataGridViewButtonColumn();
colEditar.Name = "editar";
colEditar.HeaderText = "EDITAR";
dgvEmpleados.Columns.Add(colEditar);
DataGridViewButtonColumn colBorrar = new DataGridViewButtonColumn();
colBorrar.Name = "borrar";
colBorrar.HeaderText = "BORRAR";
dgvEmpleados.Columns.Add(colBorrar);
}
private void TraerDatos() {
dgvEmpleados.Refresh();
//Debido al refresh tuve que utilizar una propiedad "bandera" por que me
//desplazaba de lugar las columnas. Esto lo pueden otimizar y mejorar.
//Alguna otra opción??? dejeme un comentario en el blog!!!
//Hacemos la conexión a la base de datos con la clase MySqlConnection
//y la cadena de conexión
MySqlConnection _con = new MySqlConnection();
_con.ConnectionString = "Data Source=" + servidor + "; Database=" + baseDatos + "; Uid=" + usuario + "; Pwd=" + password;
_con.Open();
//Creamos un objeto de tipo Datatable para después
//llenarlos de datos a través del objeto MySqlDataAdapter
DataTable dtDatos = new DataTable();
MySqlDataAdapter mdaDatos = new MySqlDataAdapter("Select * from empleados", _con);
_con.Close();
mdaDatos.Fill(dtDatos);
//Con los datos listos en nuestra tabla llenamos el datagridview
dgvEmpleados.DataSource = dtDatos;
}
private void button1_Click(object sender, EventArgs e)
{
/*El botón de la plicación es dinámico. Al inicio funcionará
para que la aplicación guarde un registro nuevo.
Después puede funcionar para editar un registo previamente cargado en los
textboxes de la forma.
*/
if (this.button1.Text == "EDITAR") {
MySqlConnection _con = new MySqlConnection();
_con.ConnectionString = "Data Source=" + servidor + "; Database=" + baseDatos + "; Uid=" + usuario + "; Pwd=" + password;
//string sql para dar un update a la tabla tomando los valores
//previamente cargados en otra función.
string sql2 = "Update practicaunipoli.empleados set nombre = '"+this.txtNombre.Text+"', email ='"+txtEmail.Text+"' where idempleados = "+this.idEmpleado+";";
MySqlCommand myCom2 = new MySqlCommand(sql2, _con);
MySqlDataReader MyReader2;
_con.Open();
MyReader2 = myCom2.ExecuteReader();
_con.Close();
//Vaciamos los textbox y restablecemos el texto del botón
this.txtNombre.Text = "";
this.txtEmail.Text = "";
this.button1.Text = "NUEVO";
//mandamos llamar de nuevo el método que refresca y llena de nuevo
//el dataridview
this.TraerDatos();
this.idEmpleado = "";
}
else
{
//Creamos la cadena sql a ejecutar la inserción
string sql = "Insert into practicaunipoli.empleados(nombre,email) values('" + this.txtNombre.Text + "','" + this.txtEmail.Text + "');";
//Creamos la conección a la base de datos
MySqlConnection _con = new MySqlConnection();
_con.ConnectionString = "Data Source=" + servidor + "; Database=" + baseDatos + "; Uid=" + usuario + "; Pwd=" + password;
_con.Open();
MySqlCommand MyCon = new MySqlCommand(sql, _con);
MySqlDataReader MyReader;
MyReader = MyCon.ExecuteReader();
MessageBox.Show("Empleado Agregado");
_con.Close();
this.txtNombre.Text = "";
this.txtEmail.Text = "";
this.TraerDatos();
}
}
private void dgvEmpleados_CellClick_1(object sender, DataGridViewCellEventArgs e)
{
//Con el método CellClick controlamos evento del usuario
// al tratar de borrar o editar un registro de la tabla.
if (dgvEmpleados.Columns[e.ColumnIndex].Name == "borrar")
{
//Usamos un atributo que se llama bandera ya que al refrescar el datagridview
// movía de posición las columnas! y tronaba el programa!!!!
if (bandera) {
this.idEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[2].Value.ToString();
}
else
{
this.idEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[0].Value.ToString();
bandera = true;
}
MySqlConnection _con = new MySqlConnection();
_con.ConnectionString = "Data Source=" + servidor + "; Database=" + baseDatos + "; Uid=" + usuario + "; Pwd=" + password;
//sql de borrado!!!
string sql = "delete from practicaunipoli.empleados where idempleados = " + idEmpleado + ";";
MySqlCommand myCommand = new MySqlCommand(sql, _con);
MySqlDataReader myReader;
_con.Open();
myReader = myCommand.ExecuteReader();
MessageBox.Show("Dato del empleado Eliminado..." + idEmpleado);
_con.Close();
this.TraerDatos();
this.idEmpleado = "";
}
if (dgvEmpleados.Columns[e.ColumnIndex].Name == "editar")
{
if (bandera)
{
this.idEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[2].Value.ToString();
this.nomEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[3].Value.ToString();
this.emEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[4].Value.ToString();
}
else
{
this.idEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[0].Value.ToString();
this.nomEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[1].Value.ToString();
this.emEmpleado = dgvEmpleados.Rows[e.RowIndex].Cells[2].Value.ToString();
bandera = true;
}
this.txtNombre.Text = nomEmpleado;
this.txtEmail.Text = emEmpleado;
this.button1.Text = "EDITAR";
}
}
}
}
Bueno, tenía mucho que no escribía algo como esto en el blog. Espero que lo aprovechen, a demás de sus comentarios al respecto. Esto no les puede resolver un proyecto completo, ni tampoco es una práctica hecha a la medida. El trabajo de modificación o adaptación a proyectos y/o tareas académicas es de ustedes.
@rezzaca #RT
No hay comentarios:
Publicar un comentario