Sesion 9 mantenimiento_sentencias_sql

14

Click here to load reader

Transcript of Sesion 9 mantenimiento_sentencias_sql

Page 1: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

MANTENIMIENTO DE DATOS CON

SENTENCIAS SQL

Sentencia de Inserción: INSERT

Agrega o inserta una nueva fila a una tabla de datos.

Sintaxis:

INSERT INTO tabla (lista_columnas)

VALUES (valor1, valor2, …, valor n)

Donde:

Lista_columnas se trata sobre los campos en las que se insertarán

los datos. Debe ir entre paréntesis y delimitada con comas.

Valor1, valor2, … , valor n son los valores o datos que van ser

insertados en la tabla.

Se hace uso de cláusulas como es el INTO, que es una palabra clave

opcional que se puede utilizar entre INSERT y la tabla de destino. La

cláusula VALUES presenta la lista de valores de datos que se van a insertar.

Debe haber un valor de datos para cada campo o columna definida en

lista_columnas (si se especificó) o en la tabla. La lista de valores debe estar

entre paréntesis. Si los valores de las listas VALUES no están en el mismo

orden que las columnas de la tabla o no tienen un valor para cada columna

de la tabla, debe utilizarse lista_columnas para especificar explícitamente la

columna que almacena cada valor de entrada.

Sentencia de Actualización: UPDATE

Cambia o modifica los datos de uno o varios registros de datos de una

tabla.

Sintaxis:

ING. MARTIN SALCEDO QUIÑONES PAGINA:1 de 14

Page 2: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

UPDATE tabla

SET Columna1 = valor1,

Columna2 = valor2,

……………………………….

Columna = valor n

[WHERE condicion_filas]

Donde:

Lista_columnas se trata de una lista de una o más columnas las

cuales serán modificadas o actualizadas por la lista de valores las

cuales deben de estar separadas por coma.

Tabla es el nombre de la tabla que va a eliminar las filas.

Valor1, valor 2, … valor n son los valores que se van a ser

asignadas a las columnas.

Condición_filas es una expresión lógica que indica que las filas que

se van a modificar son aquellas para las que el valor de la expresión

es verdadero.

Se hace uso de cláusulas como es el SET que especifica la lista de nombres

de columnas o variables que se van a actualizar. La cláusula WHERE

especifica las condiciones que limitan a las filas que se actualizan.

Sentencia de Eliminación: DELETE

Elimina o borra registros de datos de una tabla.

Sintaxis:

DELETE FROM tabla

[WHERE condicion_filas]

Donde:

Tabla es el nombre de la tabla que va a eliminar datos

Condicion_filas es una expresión lógica que indica que las filas se van

a eliminar son aquellas para las que el valor de la expresión es

verdadero.

ING. MARTIN SALCEDO QUIÑONES PAGINA:2 de 14

Page 3: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

Se hace uso de las cláusulas como es el FROM que se trata de una palabra

clave opcional que se puede utilizar entre la palabra clave DELETE. También

tenemos la cláusula WHERE que especifica las condiciones que limitan a las

filas que se eliminarán.

Aplicación

Vamos a usar la aplicación desarrollada en la sesión, es decir haremos un

mantenimiento de datos usando sentencias SQL sobre la tabla de Personal

perteneciente a la base de datos de empresa. Esta vez la base de datos de

empresa será creada en MySQL.

Solución

a. La base de datos empresa creada en MySql contiene a la tabla Personal

cuya estructura es la siguiente:

Idpersonal char(5)

Nombres varchar(32)

Apellidos varchar(32)

Cargo varchar(20)

Sueldo int

b. Una vez creada asegurarse de la existencia del conector/Net para MySql,

la misma que se instaló en una sesión anterior.

c. Creamos una solución denominada Aplica_Mantenimiento_SentenciasSql

y una vez que se muestra el entorno de desarrollo de SharpDevelop,

seleccionamos la ficha de Diseño e iniciamos colocando los objetos de

control. El diseño del formulario debe quedar así:

ING. MARTIN SALCEDO QUIÑONES PAGINA:3 de 14

Page 4: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

d. Agregar la referencia para MySql, quedando las referencias así:

ING. MARTIN SALCEDO QUIÑONES PAGINA:4 de 14

Se debe visualizar la referencia para MySql

txtcodigo

txtnombres

txtapellido

txtcargo

txtsueldo

dgPersonal

Page 5: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

e. A continuación iniciamos la programación creando procedimientos,

declarando variables de memorias y definiendo el código de la

programación para los objetos de control.

/* * Creado por SharpDevelop. * Usuario: Martín Salcedo * Fecha: 25/10/2007 * Hora: 10:09 a.m. * * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar */

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

namespace Aplica_Mantenimiento_SentenciasSQL{

/// <summary>/// Description of MainForm./// </summary>public partial class MainForm : Form{

public MySqlConnection cn;public string cod, nom, ape, car;public int sue;[STAThread]public static void Main(string[] args){

Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDe-

fault(false);Application.Run(new MainForm());

}

public MainForm(){

//// The InitializeComponent() call is required for

Windows Forms designer support.//InitializeComponent();//

ING. MARTIN SALCEDO QUIÑONES PAGINA:5 de 14

Agregar los paquetes para el manejo de MySql

Declarar éstas variables públicas

Page 6: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

// TODO: Add constructor code after the Initial-izeComponent() call.

//}

void MainFormLoad(object sender, EventArgs e){

try{

cn=new MySqlConnec-tion("database=empresa;data source=localhost;user id=root");

actualizar();}catch{

Exception ex=new Exception();MessageBox.Show(ex.Message,"Conexion");

}}public void actualizar(){

string sql="select * from personal";cn=new MySqlConnection("database=empresa;data

source=localhost;user id=root");cn.Open();MySqlDataAdapter dac=new MySqlDataAdapter(sql,cn);DataTable dtc=new DataTable();dac.Fill(dtc);this.dgPersonal.DataSource=dtc;cn.Close();

}public void llenar(){

cod=this.txtcodigo.Text;nom=this.txtnombres.Text;ape=this.txtapellidos.Text;car=this.txtcargo.Text;sue=Convert.ToInt16(this.txtsueldo.Text);

}public void limpiar(){

this.txtcodigo.Clear();this.txtnombres.Clear();this.txtapellidos.Clear();this.txtcargo.Clear();this.txtsueldo.Clear();

}

void BtnNuevoClick(object sender, EventArgs e){

limpiar();this.txtcodigo.Focus();

}

ING. MARTIN SALCEDO QUIÑONES PAGINA:6 de 14

Page 7: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

void BtnGrabarClick(object sender, EventArgs e){

MySqlCommand cmdgrabar;int rpta;rpta=Convert.ToInt16(MessageBox.Show("Desea

Grabar","Grabar", MessageBoxButtons.YesNo,MessageBoxIcon.Exclama-tion));

if(rpta==6){

llenar();cn=new MySqlConnec-

tion("database=empresa;data source=localhost;user id=root");cn.Open();string sql="insert into personal

values('"+cod+"','"+nom+"','"+ape+"','"+car+"',"+sue+")";cmdgrabar=new MySqlCommand(sql,cn);cmdgrabar.ExecuteNonQuery();cn.Close();limpiar();actualizar();

}}

void BtnBuscarClick(object sender, EventArgs e){

int t;cod=this.txtcodigo.Text;string sql="select * from personal where idperson-

al='"+cod+"'";cn=new MySqlConnection("database=empresa;data

source=localhost;user id=root");cn.Open();MySqlDataAdapter dac=new MySqlDataAdapter(sql,cn);DataTable dtc=new DataTable();dac.Fill(dtc);this.dgPersonal.DataSource=dtc;t=dtc.Rows.Count;if (t==0){

MessageBox.Show("No se encontraron reg-istros","Buscar", MessageBoxButtons.OK,MessageBoxIcon.Error);

}cn.Close();

}

void BtnModificarClick(object sender, EventArgs e){

MySqlCommand cmdmodificar;int rpta;rpta=Convert.ToInt16(MessageBox.Show("Desea Modi-

ficar los datos","Modificar", MessageBoxButtons.YesNo,MessageBoxI-con.Exclamation));

if (rpta==6){

ING. MARTIN SALCEDO QUIÑONES PAGINA:7 de 14

Page 8: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

llenar();cn=new MySqlConnec-

tion("database=empresa;data source=localhost;user id=root");cn.Open();string sql="update Personal set

nombres='"+nom+"', apellidos='"+ape+"',";sql=sql+" cargo='"+car+"', sueldo="+sue+"

where idpersonal='"+cod+"'";cmdmodificar=new MySqlCommand(sql,cn);cmdmodificar.ExecuteNonQuery();cn.Close();limpiar();actualizar();

}}

void BtnEliminarClick(object sender, EventArgs e){

MySqlCommand cmdeliminar;int rpta;rpta=Convert.ToInt16(MessageBox.Show("Desea Elimi-

nar los datos","Modificar", MessageBoxButtons.YesNo,MessageBoxI-con.Exclamation));

if (rpta==6){

cn=new MySqlConnec-tion("database=empresa;data source=localhost;user id=root");

cn.Open();string sql="delete from Personal where id-

personal='"+cod+"'";cmdeliminar=new MySqlCommand(sql,cn);cmdeliminar.ExecuteNonQuery();cn.Close();limpiar();actualizar();

}}

}}

f. Vamos a continuación con la explicación de la programación:

1. Es necesario hacer lo siguiente:

using MySql.Data.MySqlClient;using System.Data;Esto permitirá trabajar con el gestor de base de datos MySql. Para

esto es necesario ya tener como referencia a MySql.Data.

2. Declarar como variables públicas dentro de la clase MainForm

public MySqlConnection cn;public string cod, nom, ape, car;

ING. MARTIN SALCEDO QUIÑONES PAGINA:8 de 14

Page 9: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

public int sue;La variable cn es para establecer luego la conexión, las variables de

tipo String es para trabajar con los 4 primeros campos de la tabla de

Personal y la variable entera es para trabajar con el campo sueldo.

3. En el procedimiento actualizar() se programa:

public void actualizar(){

string sql="select * from personal";cn=new MySqlConnection("database=empresa;data source=lo-

calhost;user id=root");cn.Open();MySqlDataAdapter dac=new MySqlDataAdapter(sql,cn);DataTable dtc=new DataTable();dac.Fill(dtc);this.dgPersonal.DataSource=dtc;cn.Close();

}Se establece para la variable de tipo String sql el comando el select

para seleccionar todos los campos de la tabla de personal. Con el

evento Open() se establece la conexión con la variable cn. Se crea

una variable del tipo DataAdapter, usando el comando select y la

conexión cn. Se crea la variable dtc del tipo DataTable y con el

método fill se logra manejar los registros de la tabla Personal en el

DataTable. Finalmente la variable dtc se asigna a la propiedad

DataSource para visualizar los datos de la Tabla Personal en el

DataGrid dgPersonal para luego cerrar la conexión con el método

Close().

4. En el procedimiento llenar() se programa:

public void llenar(){

cod=this.txtcodigo.Text;nom=this.txtnombres.Text;ape=this.txtapellidos.Text;car=this.txtcargo.Text;sue=Convert.ToInt16(this.txtsueldo.Text);

}Permite asignar los datos que se encuentran en los cuadros de textos

a cada una de las variables públicas declaradas en la clase MainForm.

ING. MARTIN SALCEDO QUIÑONES PAGINA:9 de 14

Page 10: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

5. En el procedimiento limpiar() se programa:

public void limpiar(){

this.txtcodigo.Clear();this.txtnombres.Clear();this.txtapellidos.Clear();this.txtcargo.Clear();this.txtsueldo.Clear();

}Es para limpiar los cuadros de textos.

6. En el evento Load de MainForm se programa:

void MainFormLoad(object sender, EventArgs e){

try{

cn=new MySqlConnec-tion("database=empresa;data

source=localhost;user id=root");actualizar();

}catch{

Exception ex=new Exception();MessageBox.Show(ex.Message,"Conexion");

}}

Se crea o se instancia la variable objeto cn indicando la cadena de

conexión (estoy asumiendo que MySql tiene como identificador de

usuario a root y no tiene contraseña). Luego con el método o

procedimiento actualizar() muestro los datos de la tabla de Personal

en el objeto DataGrid dgPersonal.

7. En el botón de comando btnNuevo en su evento clic se programa:

void BtnNuevoClick(object sender, EventArgs e){

limpiar();this.txtcodigo.Focus();

}Se limpia los cuadros de textos con limpiar() y se coloca el cursor en

el objeto txtcodigo.

8. En el botón de comando btnGrabar en su evento clic se programa:

void BtnGrabarClick(object sender, EventArgs e)

ING. MARTIN SALCEDO QUIÑONES PAGINA:10 de 14

Page 11: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

{MySqlCommand cmdgrabar;int rpta;rpta=Convert.ToInt16(MessageBox.Show("Desea Grabar",

"Grabar", MessageBoxButtons.YesNo,MessageBoxIcon.Exclamation));

if(rpta==6){

llenar();cn=new MySqlConnection("database=empresa;data

source=localhost;user id=root");cn.Open();string sql="insert into personal

values('"+cod+"','"+nom+"','"+ape+"','"+car+"',"+sue+")";cmdgrabar=new MySqlCommand(sql,cn);cmdgrabar.ExecuteNonQuery();cn.Close();limpiar();actualizar();

}}Se declara la variable cmdgrabar del tipo SqlCommand (comando) y

la variable entera rpta. Se muestra un mensaje indicando si se desea

grabar y si la respuesta es afirmativa se procede a emplear el

procedimiento o método llenar(). Se establece la conexión con cn,

se prepara una variable sql para hacer uso del comando insert

(comando explicado al inicio de la presente sesión). A continuación se

instancia a la variable cmdgrabar usando el comando insert cuya

estructura se encuentra dentro de la variable sql y la conexión cn. Se

procede a grabar con el método ExecuteNonQuery() que hace

efectiva la ejecución del comando insert. Finalmente se cierra la

conexión con el método close() y se procede a ejecutar los métodos

limpiar() y actualizar().

9. En el botón de comando btnBuscar, en el evento clic se programa:

void BtnBuscarClick(object sender, EventArgs e){

int t;cod=this.txtcodigo.Text;string sql="select * from personal where idpersonal='"+cod

+"'";cn=new MySqlConnection("database=empresa;data source=lo-

calhost;user id=root");cn.Open();MySqlDataAdapter dac=new MySqlDataAdapter(sql,cn);

ING. MARTIN SALCEDO QUIÑONES PAGINA:11 de 14

Page 12: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

DataTable dtc=new DataTable();dac.Fill(dtc);this.dgPersonal.DataSource=dtc;t=dtc.Rows.Count;if (t==0){

MessageBox.Show("No se encontraron registros","Buscar", MessageBoxButtons.OK,MessageBoxIcon.Error);

}cn.Close();

}Aquí se pretende seleccionar un registro que cumpla la condición de

que el código de personal sea igual al contenido de la variable cod.

Se abre la conexión, se prepara una variable del tipo DataAdapter

denominada dac, se crea una variable dtc del tipo DataTable, con el

método fill se llena de registros a la variable dtc y ésta variable se

asigna a la propiedad DataSource del DataGrid dgPersonal. Si la

variable t que contiene el número de filas contenidas en el DataTable

dtc es igual a cero entonces se procede a mostrar un mensaje de

error.

10. En el botón de comando modificar, en el evento clic se programa:

void BtnModificarClick(object sender, EventArgs e){

MySqlCommand cmdmodificar;int rpta;

rpta=Convert.ToInt16(MessageBox.Show("Desea Modificar los datos","Modificar", MessageBoxButtons.YesNo,MessageBoxIcon.Exclamation));

if (rpta==6){

llenar();cn=new MySqlConnection("database=empresa;data

source=localhost;user id=root");cn.Open();string sql="update Personal set nombres='"+nom+"',

apellidos='"+ape+"',";sql=sql+" cargo='"+car+"', sueldo="+sue+" where

idpersonal='"+cod+"'";cmdmodificar=new MySqlCommand(sql,cn);cmdmodificar.ExecuteNonQuery();cn.Close();limpiar();actualizar();

}}La programación es similar al botón de comando Grabar, pero se

hace uso del comando UPDATE. Como verá se puede modificar todos

ING. MARTIN SALCEDO QUIÑONES PAGINA:12 de 14

Page 13: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

los datos de un empleado a excepción del código de personal. Se

hace uso de la cláusula WHERE para sólo modificar para un

empleado.

11.En el botón de comando Eliminar, en el evento clic se programa:

void BtnEliminarClick(object sender, EventArgs e){

MySqlCommand cmdeliminar;int rpta;rpta=Convert.ToInt16(MessageBox.Show("Desea Eliminar los

datos","Modificar", MessageBoxButtons.YesNo,MessageBoxIcon.Exclamation));if (rpta==6){

cn=new MySqlConnection("database=empresa;data source=localhost;user id=root");

cn.Open();string sql="delete from Personal where idpersonal='"+cod+"'";sql=sql+" cargo='"+car+"', sueldo="+sue+" where

idpersonal='"+cod+"'";cmdeliminar=new MySqlCommand(sql,cn);cmdeliminar.ExecuteNonQuery();cn.Close();limpiar();actualizar();

}}

En esta oportunidad se hace uso del comando DELETE que borrará

aquel registro cuyo código de personal sea igual al contenido de la

variable cod.

g. Finalmente grabar todos los cambios y proceder a la ejecución.

TAREA

Usando la aplicación mostrada recientemente con C# y MySQl, desarrolla el

mismo ejemplo con VB Net y MySql. Puedes proponer otra lógica de

programación como también mejorarla, pero eso sí se debe hacer uso del

objeto DataGrid.

ING. MARTIN SALCEDO QUIÑONES PAGINA:13 de 14

Page 14: Sesion 9 mantenimiento_sentencias_sql

SISTEMA DE EDUCACION VIRTUAL TALLER . NET

ING. MARTIN SALCEDO QUIÑONES PAGINA:14 de 14