Laboratorio JDBC

17
Laboratorio JDBC - Base de datos con Java Objetivos: Reconocer y realizar mantenimientos con Java y Base de datos. Implementar aplicaciones cliente servidor con Base de datos. Temas: Mantenimiento del modulo Gestionar Alumno.

description

333

Transcript of Laboratorio JDBC

Page 1: Laboratorio JDBC

Laboratorio JDBC - Base de datos con Java

Objetivos:

• Reconocer y realizar mantenimientos con Java y Base de datos.

• Implementar aplicaciones cliente servidor con Base de datos.

Temas:

Mantenimiento del modulo Gestionar Alumno.

Page 2: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 2

Pre Requisitos: Utilizar el utilitario librería.jar que nos ayudara a realizar la conexión a una Base

de Datos y utilizar componentes personalizados. Esta librería lo podemos encontrar en la siguiente ruta web: http://code.google.com/p/abaco-java-2012/downloads/detail?name=proyectoABACO_17_12_2012.7z&can=2&q=

Se debe contar con un modelo de Base datos y tener acceso a el para realizar este laboratorio. Se adjuntara un bk y si respectivo script del modelo de base datos que se encontrara en la siguiente ruta web: http://code.google.com/p/abaco-java-2012/downloads/detail?name=proyectoABACO_17_12_2012.7z&can=2&q=

Modelo de Base Datos:

Page 3: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 3

Estructura del proyecto: El proyecto Sistema de matricula tiene la siguiente arquitectura:

Descripción del proyecto: Paquetes:

controlador: Aquí se colocan todos los controladores que serán llamados por las interfaces vista.

dao: Aquí se colocan los query, insert, delete, update

modelo: Modelo de persistencia de la BD.

Vista: Aquí se colocan las interfaces que interactúa con el cliente.

vista.imagenes: aquí se colocan las imágenes del proyecto.

Librerías:

jcalendar.jar: Librería que permite usar dataPicker.

sqljdbc.jar: Librería para conectarte a base de datos SQL Server.

Pantalla principal: Esta pantalla principal se encuentra en el paquete vista del proyecto.

Page 4: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 4

Para llamar a un JDialog se tiene que realizar lo siguiente:

En el método generado se debe colocar lo siguiente:

Esta línea de código lo que realiza es llamar a la vista RegistrarAlumno.java

private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here new RegistrarAlumno(this, true).setVisible(true);

}

Page 5: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 5

Mantenimiento del modulo gestionar Alumnos: Lo que realizara este modulo es registrar, buscar, eliminar y actualizar alumnos.

Gestionar Alumno Paquete modelo:

Se tiene que crear en el paquete modelo la clase Persona:

package modelo; public class Persona { private String idPersona; private String nombres; private String apellidos; private String idTipoDocIdentidad; private String numeroDocIdentidad; private String fechaNac; private String direccion; private String sexo; private String status; public String getIdPersona() { return idPersona; } public void setIdPersona(String idPersona) { this.idPersona = idPersona; } public String getNombres() { return nombres; } public void setNombres(String nombres) { this.nombres = nombres; } public String getApellidos() { return apellidos; } public void setApellidos(String apellidos) { this.apellidos = apellidos;

Page 6: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 6

} public String getIdTipoDocIdentidad() { return idTipoDocIdentidad; } public void setIdTipoDocIdentidad(String idTipoDocIdentidad) { this.idTipoDocIdentidad = idTipoDocIdentidad; } public String getNumeroDocIdentidad() { return numeroDocIdentidad; } public void setNumeroDocIdentidad(String numeroDocIdentidad) { this.numeroDocIdentidad = numeroDocIdentidad; } public String getFechaNac() { return fechaNac; } public void setFechaNac(String fechaNac) { this.fechaNac = fechaNac; } public String getDireccion() { return direccion; } public void setDireccion(String direccion) { this.direccion = direccion; } public String getSexo() { return sexo; } public void setSexo(String sexo) { this.sexo = sexo; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } }

Page 7: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 7

Ahora se creara la Clase Alumno.java:

package modelo; public class Alumno { private Persona alumno; /** * @return the alumno */ public Persona getAlumno() { return alumno; } /** * @param alumno the alumno to set */ public void setAlumno(Persona alumno) { this.alumno = alumno; } }

Paquete dao: Se creara la clase GestionarAlumnoDAO.java:

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package dao; import libreria.Conexion; import modelo.Alumno; import modelo.Persona; /** * * @author Jonathan */ public class GestionarAlumnoDAO { public boolean actualizarAlumno(Alumno alumno){

Page 8: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 8

Conexion cn = new Conexion(); String sqlUpdate="Update Persona set "; sqlUpdate+="nombres='"+alumno.getAlumno().getNombres()+"', "; sqlUpdate+="apellidos='"+alumno.getAlumno().getApellidos()+"', "; sqlUpdate+="direccion='"+alumno.getAlumno().getDireccion()+"', "; sqlUpdate+="fechaNac='"+alumno.getAlumno().getFechaNac()+"'"; sqlUpdate+=" where idPersona='"+alumno.getAlumno().getIdPersona()+"'"; int r1=cn.execCommand(sqlUpdate); if(r1>0){ cn.Close(1, 1, 1); return true; }else{ return false; } } public boolean eliminarAlumno(String idAlumno) { Conexion cn = new Conexion(); int r1 = cn.execCommand("delete from alumno where idAlumno=" + idAlumno); if (r1 > 0) { int r2 = cn.execCommand("delete from persona where idPersona=" + idAlumno); if (r2 > 0) { System.out.println("Se realizo la eliminacion del alumno " + idAlumno + " con Exito"); return true; } else { cn.RollBack(); cn.Close(1, 1, 1); return false; } } else { cn.RollBack(); cn.Close(1, 1, 1); return false; } } public boolean agregarAlumno(Alumno alumno) { boolean bAgregarAlumno = false; boolean bAgregarPersona = agregarPerona(alumno.getAlumno()); String idPersona = ""; if (bAgregarPersona) { idPersona = getIdPersona(); Conexion cn = new Conexion(); if (idPersona != null) { int resultAlumno = cn.execCommand("insert into Alumno values('" + idPersona + "')"); if (resultAlumno > 0) { bAgregarAlumno = true;

Page 9: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 9

} else { System.out.println("Error al ingresar Alumno contacte con el administrador"); cn.RollBack(); } } else { System.out.println("Error al capturar idpersona contacte con el administrador"); cn.RollBack(); } cn.Close(1, 1, 1); } else { System.out.println("Error al agregar una persona contacte con el administrador"); } return bAgregarAlumno; } public boolean agregarPerona(Persona per) { Conexion cn = new Conexion(); int result = cn.execCommand("insert into Persona" + "(nombres,apellidos, idTipoDocIdentidad, numeroDocIdentidad, fechaNac, " + "direccion, sexo, status) values" + "('" + per.getNombres() + "','" + per.getApellidos() + "','" + per.getIdTipoDocIdentidad() + "'," + "'" + per.getNumeroDocIdentidad() + "','" + per.getFechaNac() + "','" + per.getDireccion() + "','" + per.getSexo() + "'," + "'A')"); cn.Close(1, 1, 1); if (result > 0) { return true; } else { return false; } } public String getIdPersona() { String idPer = null; Conexion cn = new Conexion(); cn.execQuery("select Max(idPersona) from Persona"); if (cn.getNext()) { idPer = cn.getCol(1); } cn.Close(1, 1, 1); return idPer; } }

Page 10: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 10

Paquete Controlador: Se debe crear el controlador GestionarAlumnoControlador.java:

package controlador; import dao.GestionarAlumnoDAO; import modelo.Alumno; /** * * @author Jonathan */ public class GestionarAlumnoControlador { GestionarAlumnoDAO dao=new GestionarAlumnoDAO(); public boolean agregarAlumno(Alumno alumno){ return dao.agregarAlumno(alumno); } public boolean eliminarAlumno(String idAlumno){ return dao.eliminarAlumno(idAlumno); } public boolean actualizarAlumno(Alumno alumno){ return dao.actualizarAlumno(alumno); } }

Page 11: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 11

Paquete Vista: o Formulario Registrar Alumno

Para realizar el registro de alumnos se debe crear la siguiente interface:

Se debe usar el componente miComboBox para mostrar los tipos de documentos desde la base de datos, para este fin se realiza lo siguiente:

1. Se debe jalar el componente miComboBox al vista JDialog. 2. Se debe colocar en el constructor de clase lo siguiente:

public RegistrarAlumno(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); chargeComboBox(); } private void chargeComboBox(){ miComboBox1.setConsulta("select idTipoDocIdentidad, tipoDocIdentidad from tipoDocIdentidad"); }

3. En el método chargeComboBox() se debe llamar a miCombobox1

y setear el método consulta con el query a realizar a la BD.

Page 12: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 12

Para poder registrar un alumno se debe realizar la siguiente configuración al botón registrar:

En el método generado se debe poner el siguiente código:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: agregarAlumno(jTextField1.getText() ,jTextField2.getText(),miComboBox1.getConsulta() , jTextField4.getText(), jTextField5.getText(), jComboBox2.getSelectedItem().toString(), jTextField3.getText()); } private void agregarAlumno(String nombres, String apellidos, String tipoDoc, String numeroDoc, String fechaNac, String sexo, String direccion){ Persona per=new Persona(); per.setNombres(nombres);

Page 13: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 13

per.setApellidos(apellidos); per.setIdTipoDocIdentidad(tipoDoc); per.setNumeroDocIdentidad(numeroDoc); per.setFechaNac(fechaNac); per.setSexo(sexo); per.setDireccion(direccion); Alumno alum=new Alumno(); alum.setAlumno(per); GestionarAlumnoControlador controller=new GestionarAlumnoControlador(); if(controller.agregarAlumno(alum)){ MsgShow.informationMessage("Persona "+nombres+" agreagada correctamente", "Exito al Registrar"); }else{ MsgShow.errorMessage("Persona "+nombres+" error al agregarlo", "Error al Registrar"); } }

En el botón cancelar poner el siguiente código una vez generado el evento:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: dispose();

}

Page 14: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 14

o Formulario Buscar y Eliminar Alumno Se debe crear la siguiente interface llamada MantenimientoAlumno.java

En el botón Buscar se debe colocar la siguiente línea de código:

private void jbtnBuscarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here String query="select" + " p.idPersona as IdAlumno, p.nombres as Nombres, p.apellidos as Apellidos, p.fechaNac as FechaNac, p.direccion" + "tdi.tipoDocIdentidad as TipoDoc, p.numeroDocIdentidad as NumeroDoc, p.sexo as Sexo " + "from persona p, alumno a, tipoDocIdentidad tdi " + "where p.idpersona=a.idalumno and tdi.idTipoDocIdentidad=p.idTipoDocIdentidad and " + "p.nombres like '%"+jtxtNombres.getText()+"%' and p.apellidos like '%"+jtxtApellidos.getText()+"%' and " + "p.numeroDocIdentidad like '%"+jtxtNumDoc.getText()+"%'"; if(!jcbxTipoSexo.getSelectedItem().equals("Todos")){ query+=" and p.sexo='"+jcbxTipoSexo.getSelectedItem().toString().substring(0, 1) +"'"; } try{

Page 15: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 15

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); String fechaNac=sdf.format(jDFechaNac.getCalendar().getTime()).toString(); if(fechaNac!=null){ query+=" and p.fechaNac='"+fechaNac+"'"; } }catch(Exception e){ query+=""; } miDataTable1.setConsulta(query); }

En el método constructor el siguiente código:

public MantenientoAlumno(java.awt.Frame parent, boolean modal){ super(parent, modal); initComponents(); miDataTable1.setConsulta("select p.idPersona as IdAlumno, p.nombres as Nombres, p.apellidos as Apellidos,p.fechaNac as FechaNac, p.direccion, tdi.tipoDocIdentidad as TipoDoc, p.numeroDocIdentidad as NumeroDoc, p.sexo as Sexo " + "from persona p, alumno a, tipoDocIdentidad tdi where p.idpersona=a.idalumno and tdi.idTipoDocIdentidad=p.idTipoDocIdentidad"); }

En el botón eliminar de la interface se debe colocar el siguiente código:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: //Consultar si desea eliminar el registro int val=JOptionPane.showConfirmDialog(this, "Deseaa eliminar este registro"); if(val==0){ GestionarAlumnoControlador gc=new GestionarAlumnoControlador(); gc.eliminarAlumno(miDataTable1.getFila().get(0).toString()); consultaAlumno(); } }

En el botón actualizar se debe colocar el siguiente código:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: ActualizarAlumno act= new ActualizarAlumno(null, true); act.cargaDatos(miDataTable1.getFila().get(1).toString(), miDataTable1.getFila().get(2).toString(), miDataTable1.getFila().get(4).toString(), miDataTable1.getFila().get(3).toString(),miDataTable1.getFila().get(0).toString()); act.setVisible(true); }

Cabe señalar que el método cargaDatos debe estar creado en el JDialog

Page 16: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 16

ActualizarAlumno.java

o Formulario Actualizar Alumno

Se debe crear el método de carga de datos:

public void cargaDatos(String nombres, String apellidos, String direccion, String fechaNac){ jTextField1.setText(nombres); jTextField2.setText(apellidos); jTextField3.setText(direccion); jTextField4.setText(fechaNac); }

En el botón Actualizar se debe colocar las siguientes líneas de código:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: GestionarAlumnoControlador gac=new GestionarAlumnoControlador(); Persona per=new Persona(); per.setIdPersona(idPersona); per.setNombres(jTextField1.getText()); per.setApellidos(jTextField2.getText()); per.setDireccion(jTextField3.getText()); per.setFechaNac(jTextField4.getText()); Alumno alu=new Alumno(); alu.setAlumno(per); if(gac.actualizarAlumno(alu)){ MsgShow.informationMessage("Actualizacion Exitosa del Alumno "+per.getNombres()+" "+per.getApellidos(), "Actualizacion Exitosa"); MantenientoAlumno m=new MantenientoAlumno(null, false); m.consultaAlumno();

Page 17: Laboratorio JDBC

16 de diciembre de 2012 [LABORATORIO JAVA]

Por Jonathan A. Jurado Sandoval Página 17

dispose(); }else{ MsgShow.errorMessage("Error al actualizar Alumno "+per.getNombres()+" "+per.getApellidos()+"\nContacte con el Administrador", "Error al Actualizar"); } }