Download - 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.
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:
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.
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);
}
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;
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; } }
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){
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;
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; } }
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); } }
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.
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);
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();
}
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{
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
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();
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"); } }