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.
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: Por Jonathan A. Jurado Sandoval Página 2
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. Por Jonathan A. Jurado Sandoval Página 3
Para llamar a un JDialog se tiene que realizar lo siguiente: En el método generado se debe colocar lo siguiente: private void jmenuitem6actionperformed(java.awt.event.actionevent evt) { // TODO add your handling code here new RegistrarAlumno(this, true).setvisible(true); Esta línea de código lo que realiza es llamar a la vista RegistrarAlumno.java Por Jonathan A. Jurado Sandoval Página 4
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; Por Jonathan A. Jurado Sandoval Página 5
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; Por Jonathan A. Jurado Sandoval Página 6
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){ Por Jonathan A. Jurado Sandoval Página 7
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; Por Jonathan A. Jurado Sandoval Página 8
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; Por Jonathan A. Jurado Sandoval Página 9
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); Por Jonathan A. Jurado Sandoval Página 10
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. Por Jonathan A. Jurado Sandoval Página 11
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); Por Jonathan A. Jurado Sandoval Página 12
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(); Por Jonathan A. Jurado Sandoval Página 13
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{ Por Jonathan A. Jurado Sandoval Página 14
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 Por Jonathan A. Jurado Sandoval Página 15
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(); Por Jonathan A. Jurado Sandoval Página 16
dispose(); else{ MsgShow.errorMessage("Error al actualizar Alumno "+per.getnombres()+" "+per.getapellidos()+"\ncontacte con el Administrador", "Error al Actualizar"); Por Jonathan A. Jurado Sandoval Página 17