Está en la página 1de 7

Programación II - 2015

Turno Mañana

Parte III: Formulario de Inserción de Nuevo Registro


En este tutorial parte 3 vamos a desarrollar el Formulario FrmInsert, cuyo objetivo consiste en insertar un nuevo
registro en tabla “Alumnos”, a continuación mostramos una imagen del formulario en tiempo de ejecución, este
formulario se ejecuta cuando el usuario hace un clic con el botón izquierdo del mouse sobre el bóton “Nuevo”.

Desarrollo del Formulario

1. Seleccionamos el proyecto “Proyecto datos SQL” en explorador de soluciones, hacemos 1 clic botón derecho
del mouse y agregamos un nuevo Formulario y escribimos como Nombre “FrmInsert.cs”.
2. Luego diseñamos el formulario como aparece en la siguiente figura.

Ing. Cristian Felipe Yapura Página 1 de 7


Programación II - 2015
Turno Mañana

Configuración de los objetos del formulario

Clase Propiedad Valor


Form Name FrmInsert
ControlBox false
FormBorderStyle FixedSingle
StarPosition CenterScreen
Text Nuevo Registro
TextBox Name txtLegajo
Enabled False
Text Vacio
TexBox Name txtNombre
CharacterCasing Upper
Text Vacio
TexBox Name txtApellido
CharacterCasing Upper
Text Vacio
ComboBox Name cboSexo
DropDownStyle DropDwonList
Button Name btnGrabar
Text Grabar
TextAlign MiddleRight
Image
ImageAlign MiddleLeft
Button Name btnCancelar
Text Cancelar
Image
ImageAlign MiddleLeft

Ing. Cristian Felipe Yapura Página 2 de 7


Programación II - 2015
Turno Mañana

Código de FrmIsert
1. En cualquier parte del formulario hacemos doble clic con botón izquierdo del mouse, para generar el método
asociado al evento load(evento que se dispara automáticamente cuando se carga el formulario en Memoria).
private void FrmInsertAlu_Load(object sender, EventArgs e)
{

}
2. Dentro de las llaves {} introducimos el siguiente código.
private void FrmInsertAlu_Load(object sender, EventArgs e)
{
//agregamos un item al ComboBox
cboSexo.Items.Add("Masculino");
//agregamos otro item al comboBox
cboSexo.Items.Add("Femenino");
//establecemos la propiedad SelectedIndex a 0
//para que aprezca por defecto Masculimo
cboSexo.SelectedIndex = 0;
}
3. Definimos en cualquier parte de clase un método que nos permita limpiar el contenido de los objetos
TextBox
//Metodo para limpiar todos los TextBoxs del Form
private void ClearTextBoxs()
{
txtApellido.Text = string.Empty;
txtNombre.Text = string.Empty;
}
4. En el botón btnGrabar hacemos doble clic botón izquierdo del mouse, para que nos genere el código
asociado al evento click.
private void btnGrabar_Click(object sender, EventArgs e)
{

5. Dentro de las llaves {} introducimos el siguiente código:

//Variable local que contiene la conexion a Mysql


MySqlConnection myConn = null;
//Crear un objeto que contiene la info de Conexion
//Al servidor Mysql
Conexion cnn = new Conexion();
//Creamos una variable local lcSexo
//y le asignamos el valor "M"
string lcSexo = "M";
//pregunatamos si esta seleccionado el item 1
//que corresponde a Femenino
//si se cumple esta condición asignamos "F" a lcSexo
if (cboSexo.SelectedIndex == 1) lcSexo = "F";

Ing. Cristian Felipe Yapura Página 3 de 7


Programación II - 2015
Turno Mañana

try
{
//Creamos 1 nueva conexión
myConn = new MySqlConnection(cnn.ConnectionString);
//abrimos la conexión
myConn.Open();
//Creamos 1 objeto MySqlCommand cmd
MySqlCommand cmd = new MySqlCommand();
//establecemos las propiedades del objeto cmd
//asignamos la conexión
cmd.Connection = myConn;
//asignamos la sentencia SQL de inserción que se debe ejecutar
//INSERT INTO alumnos(Nombre,Apellido,Sexo) VALUES(@Nombre,@Apellido,@Sexo);
string sql = "INSERT INTO alumnos(Nombre,Apellido,Sexo)\n";
//concatenamos con + la otra parte de la sentencia SQL
//con sus repectivos valores(parametros @)
sql+= "VALUES(@Nombre,@Apellido,@Sexo);";
//la variable sql contiene este valor
//INSERT INTO alumnos(Nombre,Apellido,Sexo) VALUES(@Nombre,@Apellido,@Sexo);
cmd.CommandText = sql;
//preparamos el comando para su futura ejecución
cmd.Prepare();
//Asignamos los valores a cada parametro
cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text.Trim());
cmd.Parameters.AddWithValue("@Apellido", txtApellido.Text.Trim());
cmd.Parameters.AddWithValue("@Sexo", lcSexo);
//Ejecutamos la consulta de inserción mediante el metodo
//ExecuteNonQuery() del objeto cmd
cmd.ExecuteNonQuery();
//Muestro Mensaje en ventana modal
MessageBox.Show("Registro Insertado Correctamente");
//llamar al metodo
ClearTextBoxs();
//pasar el foco a txtNombre
txtNombre.Focus();
}
catch (MySqlException ex)
{
MessageBox.Show("Error: {0}", ex.Message);

}
finally
{
if (myConn != null)
{
myConn.Close();
}

Ing. Cristian Felipe Yapura Página 4 de 7


Programación II - 2015
Turno Mañana

Teoría Relacionada al Código


Añadimos un nuevo alumno a la tabla “Alumnos”. Utilizamos un comando parametrizado.
string sql = "INSERT INTO alumnos(Nombre,Apellido,Sexo)\n";
sql+= "VALUES(@Nombre,@Apellido,@Sexo);";
cmd.CommandText = sql;
cmd.Prepare();

Aquí creamos una declaración preparada. Cuando escribimos declaraciones preparadas, utilizamos marcadores de
posición en lugar de escribir directamente los valores en las declaraciones. Las declaraciones preparadas son más
rápidas y protegen contra los ataques de inyección SQL. @Nombre es un marcador de posición, que se va a llenar
más tarde.
cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text.Trim());

Un valor está ligado al marcador de posición, en este caso el valor es txtNombre.Text.Trim(), que es lo que el usuario
ingreso en este objeto, utilizando el método Trim() para eliminar espacios a l comienzo y al final de valor.
cmd.ExecuteNonQuery();

Se ejecuta la sentencia preparada. Utilizamos el método ExecuteNonQuery () del objeto MySqlCommand cuando no
esperamos ningún dato a ser devueltos. Utilizamos este método cuando creamos las bases de datos, tablas o
ejecutamos sentencias INSERT, UPDATE y DELETE.

Codificación del Evento Click del botón btnNuevo


1. Abrimos el formulario FrmAlumnos.
2. Hacemos doble clic en el botón btnNuevo, y generamos el código relacionado al evento click del botón
private void btnNuevo_Click(object sender, EventArgs e)
{

}
3. Dentro de las llaves {} introducimos el siguiente código:
FrmInsertAlu frm1 = new FrmInsertAlu();
//llamar al form
frm1.ShowDialog();
//Actualizar la grilla de datos
InitData();//llamar al metodo InitData

Ing. Cristian Felipe Yapura Página 5 de 7


Programación II - 2015
Turno Mañana

FrmInsert: así queda el código al Final


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace ProyectoDatosSQL
{
public partial class FrmInsertAlu : Form
{
public FrmInsertAlu()
{
InitializeComponent();
}

private void FrmInsertAlu_Load(object sender, EventArgs e)


{
//agregamos un item al ComboBox
cboSexo.Items.Add("Masculino");
//agregamos otro item al comboBox
cboSexo.Items.Add("Femenino");
//establecemos la propiedad SelectedIndex a 0
//para que aprezca por defecto Masculimo
cboSexo.SelectedIndex = 0;
}

private void btnCancelar_Click(object sender, EventArgs e)


{
Close();
}

//Metodo para limpiar todos los TextBoxs del Form


private void ClearTextBoxs()
{
txtApellido.Text = string.Empty;
txtNombre.Text = string.Empty;
}

private void btnGrabar_Click(object sender, EventArgs e)


{
//Variable local que contiene la conexion a Mysql
MySqlConnection myConn = null;
//Crear un objeto que contiene la info de Conexion
//Al servidor Mysql
Conexion cnn = new Conexion();
//Creamos una variable local lcSexo
//y le asignamos el valor "M"
string lcSexo = "M";
//pregunatamos si esta seleccionado el item 1

Ing. Cristian Felipe Yapura Página 6 de 7


Programación II - 2015
Turno Mañana

//que corresponde a Femenino


//si se cumple esta condición asignamos "F" a lcSexo
if (cboSexo.SelectedIndex == 1) lcSexo = "F";
try
{
//Creamos 1 nueva conexión
myConn = new MySqlConnection(cnn.ConnectionString);
//abrimos la conexión
myConn.Open();
//Creamos 1 objeto MySqlCommand cmd
MySqlCommand cmd = new MySqlCommand();
//establecemos las propiedades del objeto cmd
//asignamos la conexión
cmd.Connection = myConn;
//asignamos la sentencia SQL de inserción que se debe ejecutar
//INSERT INTO alumnos(Nombre,Apellido,Sexo) VALUES(@Nombre,@Apellido,@Sexo);
string sql = "INSERT INTO alumnos(Nombre,Apellido,Sexo)\n";
//concatenamos con + la otra parte de la sentencia SQL
//con sus repectivos valores(parametros @)
sql+= "VALUES(@Nombre,@Apellido,@Sexo);";
//la variable sql contiene este valor
//INSERT INTO alumnos(Nombre,Apellido,Sexo) VALUES(@Nombre,@Apellido,@Sexo);
cmd.CommandText = sql;
//preparamos el comando para su futura ejecución
cmd.Prepare();
//Asignamos los valores a cada parametro
cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text.Trim());
cmd.Parameters.AddWithValue("@Apellido", txtApellido.Text.Trim());
cmd.Parameters.AddWithValue("@Sexo", lcSexo);
//Ejecutamos la consulta de inserción mediante el metodo
//ExecuteNonQuery() del objeto cmd
cmd.ExecuteNonQuery();
//Muestro Mensaje en ventana modal
MessageBox.Show("Registro Insertado Correctamente");
//llamar al metodo
ClearTextBoxs();
//pasar el foco a txtNombre
txtNombre.Focus();
}
catch (MySqlException ex)
{
MessageBox.Show("Error: {0}", ex.Message);

}
finally
{
if (myConn != null)
{
myConn.Close();
}

}
}
}
}

Ing. Cristian Felipe Yapura Página 7 de 7

También podría gustarte