jueves, 28 de agosto de 2014

Vídeo de instalación del Netbeans con Phonegap.

Este vídeo les puede ayudar en la instalación, además de otros recursos.



Por lo que se ve en el vídeo, sí se requiere de buena conexión a Internet!

http://sergioandres5409.blogspot.mx/2014/03/crear-aplicaciones-con-netbeans.html

miércoles, 2 de julio de 2014

CRUD básico para hacer la tarea con Mysql y C#

1.- Para este minitutorial se requiere haber instalado el driver de MySQL para windows junto con la base de datos MySQL, ya sea que la instales independientemente o a través del programa WAMPSERVER.

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.
3.- Crear una forma en Visual Studio, donde hay que hacer la referencia hacia las librerías de MySQL.

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

viernes, 31 de enero de 2014

viernes, 17 de enero de 2014

Instalación de OpenGL en Visual Studio 2012



Recientemente restablecí mi computador e instalé la versión de Visual Studio 2012. En la materia de graficación que imparto en el Tecnológico de Lerdo utilizamos el OpenGL para las prácticas. Afortunadamente en la red y en los blogs siempre hay alguien que comparte información que resuelve problemas. Aquí la solución:

http://csfranknotes.wordpress.com/2012/10/11/opengl-habilitar-glut-en-visual-c/ 

Feliz 2014!