Está en la página 1de 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.

16 de diciembre de 2012

[LABORATORIO JAVA]

Pre Requisitos:

Utilizar el utilitario librera.jar que nos ayudara a realizar la conexin a una Base
de Datos y utilizar componentes personalizados. Esta librera lo podemos
encontrar en la siguiente ruta web: http://code.google.com/p/abaco-java2012/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-java2012/downloads/detail?name=proyectoABACO_17_12_2012.7z&can=2&q=

Modelo de Base Datos:

Por Jonathan A. Jurado Sandoval

Pgina 2

16 de diciembre de 2012

[LABORATORIO JAVA]

Estructura del proyecto:


El proyecto Sistema de matricula tiene la siguiente arquitectura:
Descripcin del proyecto:
Paquetes:
controlador: Aqu se colocan todos los
controladores que sern 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
interacta con el cliente.
vista.imagenes: aqu se colocan las imgenes
del proyecto.
Libreras:
jcalendar.jar: Librera que permite usar
dataPicker.
sqljdbc.jar: Librera 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

Pgina 3

16 de diciembre de 2012

[LABORATORIO JAVA]

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

En el mtodo 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 lnea de cdigo lo que realiza es llamar a la vista RegistrarAlumno.java

Por Jonathan A. Jurado Sandoval

Pgina 4

16 de diciembre de 2012

[LABORATORIO JAVA]

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

Pgina 5

16 de diciembre de 2012

[LABORATORIO JAVA]

}
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

Pgina 6

16 de diciembre de 2012

[LABORATORIO JAVA]

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

Pgina 7

16 de diciembre de 2012

[LABORATORIO JAVA]

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

Pgina 8

16 de diciembre de 2012

[LABORATORIO JAVA]

} 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

Pgina 9

16 de diciembre de 2012

[LABORATORIO JAVA]

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

Pgina 10

16 de diciembre de 2012

[LABORATORIO JAVA]

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 mtodo chargeComboBox() se debe llamar a miCombobox1
y setear el mtodo consulta con el query a realizar a la BD.

Por Jonathan A. Jurado Sandoval

Pgina 11

16 de diciembre de 2012

[LABORATORIO JAVA]

Para poder registrar un alumno se debe realizar la siguiente configuracin


al botn registrar:

En el mtodo generado se debe poner el siguiente cdigo:


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

Pgina 12

16 de diciembre de 2012

[LABORATORIO JAVA]

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 botn cancelar poner el siguiente cdigo 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

Pgina 13

16 de diciembre de 2012

[LABORATORIO JAVA]

o Formulario Buscar y Eliminar Alumno


Se debe crear la siguiente interface llamada MantenimientoAlumno.java

En el botn Buscar se debe colocar la siguiente lnea de cdigo:


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

Pgina 14

16 de diciembre de 2012

[LABORATORIO JAVA]

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 mtodo constructor el siguiente cdigo:
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 botn eliminar de la interface se debe colocar el siguiente cdigo:
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 botn actualizar se debe colocar el siguiente cdigo:
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 sealar que el mtodo cargaDatos debe estar creado en el JDialog
Por Jonathan A. Jurado Sandoval

Pgina 15

16 de diciembre de 2012

[LABORATORIO JAVA]

ActualizarAlumno.java

o Formulario Actualizar Alumno

Se debe crear el mtodo 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 botn Actualizar se debe colocar las siguientes lneas de cdigo:
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

Pgina 16

16 de diciembre de 2012

[LABORATORIO JAVA]

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

Por Jonathan A. Jurado Sandoval

Pgina 17