LABORATORIO N° 12
MANIPULACION DE DATOS
Alumno(s) Nota
I.- OBJETIVOS:
• Adicionar controles a un formulario en Java
• Personalizar los controles por medio de propiedades
• Adicionar código Java a los eventos de un formulario
• Ejecutar aplicaciones en Java basadas en ventanas
II.- SEGURIDAD:
Advertencia:
En este laboratorio está prohibida la manipulación del
hardware, conexiones eléctricas o de red; así como la ingestión
de alimentos o bebidas.
V.- RECURSOS:
• En este laboratorio cada alumno trabajará con un equipo con Windows XP.
• Este equipo cuenta con JDK instalado, así como alguno de los IDE (Entorno de Desarrollo Integrado)
NetBeans.
VII.- PROCEDIMIENTO:
1. CREACIÓN DE UN PROYECTO NUEVO EN NETBEANS
2.1. Ejecute el administrador de base de datos XAMPP y verifique que estén ejecutándose los servicios Apache y
MySQL
2.2. Acceda a la administración web de MySQL
2.3. Haga clic en la base de datos DemoSistema , diríjase a la pestaña SQL digite el siguiente comando SQL para la
creación de la tabla areas
create table areas (
codigo int not null,
nombre varchar(40) not null,
abreviatura varchar(15) not null,
estado varchar(1),
constraint pk_areas primary key (codigo)
);
3.1. Cree una nueva clase java denominada Areas.java dentro del paquete clases
3.2. Abra la clase Areas.java y adicione la siguientes función que permite pasar los valores de un objeto ResultSet a un
Vector. No olvide agregar las sentencias import necesarias
private Vector ResultSetToVector(ResultSet rs) throws SQLException {
Vector vRows = new Vector();
while(rs.next()) {
Vector vCol = new Vector();
int nroFields = rs.getMetaData().getColumnCount();
for(int i=1 ; i <=nroFields; i++) {
String strTmp = rs.getString(i);
vCol.add(strTmp);
}
vRows.add(vCol);
}
return vRows;
}
3.3. Adicione a la clase Areas.java una función denominada getAreas() que permite obtener todos los registros de la
tabla areas de la base de datos con el siguiente contenido (NOTA: cambie el ambito del metodo conectar()
perteneciente a la clase cBaseDatos, de private a public)
public Vector getAreas() {
Vector vRet = null;
try {
String sql = "select codigo,nombre,abreviatura,estado from areas order by
codigo";
cBaseDatos bd = new cBaseDatos();
Connection xcon = bd.Conectar();
Statement stm = xcon.createStatement();
ResultSet rs = stm.executeQuery(sql);
vRet = ResultSetToVector(rs);
rs.close();
stm.close();
xcon.close();
} catch(SQLException e){
e.printStackTrace();
}
return vRet;
}
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 3 de 28
4.1. Dentro del paquete formularios cree un nuevo JFrame denominado: frmAreas y diseñe la interfaz tal
como se muestra
Objeto Propiedad
txtCodigo Editable (no)
cmdEstado Item: [A,X]
NOTA: Para asignar un absolute layout, haga clic sobre el JFrame→Activar gestor de
Distribucion→Diseño Absoluto (Puede repetir dicho proceso sobre cada JPanel que se inserte)
public frmAreas() {
initComponents();
cargarLista();
}
4.4. Haga clic derecho sobre frmAreas→Ejecutar Archivo. Verifique que se listan los registros de la tabla
Areas
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 5 de 28
4.5. Haga clic derecho sobre la tabla de áreas→eventos→mouse→mouseClicked para adicionar un evento
sobre esta
4.7. Ejecute el archivo frmAreas y verifique que al seleccionar un elemento de la lista , este se muestra en los cuadros de
texto
4.8. Se pasara a programar las acciones sobre la tabla áreas. Para esto modifique el constructor del JFrame frmAreas
como sigue
public frmAreas() {
initComponents();
cargarLista();
btnNuevo.setEnabled(true);
btnEditar.setEnabled(false);
btnGuardar.setEnabled(false);
btnEliminar.setEnabled(false);
btnCancelar.setEnabled(false);
}
4.9. Crearemos en la clase cBaseDatos una función denominada generarCodigo() que permita autogenerar un código
para una tabla cualquiera de la base de datos
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 6 de 28
4.10. Adicione a la clase Areas.java una función denominada grabarNuevaArea() que permite adicionar un nuevo
registro a la tabla areas con el siguiente contenido
public void grabarNuevaArea( String[] datos ) throws SQLException {
cBaseDatos db = new cBaseDatos();
String xcod = db.generarCodigo("areas","codigo");
String xnom = datos[0];
String xabr = datos[1];
String xest = datos[2];
String sql = "insert into areas (codigo,nombre,abreviatura,estado) values
(?,?,?,?) ";
Connection xcon = db.Conectar();
PreparedStatement ps = xcon.prepareStatement(sql);
ps.setString(1, xcod);
ps.setString(2, xnom);
ps.setString(3, xabr);
ps.setString(4, xest);
ps.executeUpdate();
xcon.close();
}
JOptionPane.showMessageDialog(this, "Error al
intentar insertar Registro.");
}
}
btnNuevo.setEnabled(true);
btnEditar.setEnabled(false);
btnGuardar.setEnabled(false);
btnCancelar.setEnabled(false);
btnEliminar.setEnabled(false);
4.15. Crearemos en la clase Areas.java una función denominada modificarArea() que permitirá grabar nuevos valores en
un registro existente de la tabla áreas
public void modificarArea( String[] datos ) throws SQLException {
String xcod = datos[0];
String xnom = datos[1];
String xabr = datos[2];
String xest = datos[3];
String sql = "update areas set nombre=?, abreviatura=?, estado=?
where codigo=? ";
cBaseDatos db = new cBaseDatos();
Connection xcon = db.Conectar();
PreparedStatement ps = xcon.prepareStatement(sql);
ps.setString(1, xnom);
ps.setString(2, xabr);
ps.setString(3, xest);
ps.setString(4, xcod);
ps.executeUpdate();
xcon.close();
}
areas.modificarArea(datos);
cargarLista();
JOptionPane.showMessageDialog(this, "Registro
modificado correctamente");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Error al
intentar editar Registro.");
}
}
btnNuevo.setEnabled(true);
btnEditar.setEnabled(false);
btnGuardar.setEnabled(false);
btnCancelar.setEnabled(false);
btnEliminar.setEnabled(false);
4.17. Crearemos en la clase Areas.java una función denominada eliminarAreas() que permita eliminar un registro a
través de sus código correspondiente
public void eliminarAreas( String codigo ) throws SQLException
{
String sql = "DELETE FROM areas WHERE codigo=?";
cBaseDatos db = new cBaseDatos();
Connection xcon = db.Conectar();
PreparedStatement ps = xcon.prepareStatement(sql);
ps.setString(1, codigo);
ps.executeUpdate();
xcon.close();
}
4.19. Asigne desde menus.java para que que al seleccionar la opción de menu Areas, invoque a frmAreas
4.20. Ejecute frmAreas y verifique su funcionamiento
5.1. Cee las siguientes dos tablas correspondientes a alumnos y cursos, con las siguientes instrucciones SQL
create table alumnos (
codigo int not null,
nombre varchar(40) not null,
direccion varchar(40),
email varchar(30),
telefono varchar(15),
celular varchar(10),
sexo varchar(1),
fec_nac date,
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 9 de 28
estado varchar(1),
constraint pk_alumnos primary key (codigo)
);
5.2. Siguiendo el ejemplo de administracion de la tabla Areas. Desarrolle el respectivo formulario de mantenimiento
(administracion) para las tablas t_usuarios, alumnos y cursos.
5.3. Cree una clase por cada tabla, para que cada modelo sea trabajado independientemente
5.4. Adicione cada JFrame creado a la secion principal del sistema, patra que cada elemento pueda ser invocado
ALUMNOS:
package clases;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
stm.close();
xcon.close();
} catch(SQLException e){
e.printStackTrace();
}
return vRet;
}
public void grabarNuevaArea( String[] datos ) throws SQLException {
ps.setString(1, xnom);
ps.setString(2, xdir);
ps.setString(3, xema);
ps.setString(4, xtel);
ps.setString(5, xcel);
ps.setString(6, xsex);
ps.setString(7, xfec);
ps.setString(8, xest);
ps.setString(9, xcod);
ps.executeUpdate();
xcon.close();
}
public void eliminarAreas( String codigo ) throws SQLException {
String sql = "DELETE FROM ALUMNOS WHERE CODIGO=?";
cBaseDatos db = new cBaseDatos();
Connection xcon = db.Conectar();
PreparedStatement ps = xcon.prepareStatement(sql);
ps.setString(1, codigo);
ps.executeUpdate();
xcon.close();
}
}
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 12 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 13 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 14 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 15 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 16 de 28
CURSOS:
package clases;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
e.printStackTrace();
}
return vRet;
}
public void grabarNuevaArea( String[] datos ) throws SQLException {
ps.executeUpdate();
xcon.close();
}
public void eliminarAreas( String codigo ) throws SQLException {
String sql = "DELETE FROM cursos WHERE CODIGO=?";
cBaseDatos db = new cBaseDatos();
Connection xcon = db.Conectar();
PreparedStatement ps = xcon.prepareStatement(sql);
ps.setString(1, codigo);
ps.executeUpdate();
xcon.close();
}
}
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 19 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 20 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 21 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 22 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 23 de 28
EJERCICIOS PROPUESTOS
1. Cree los respectivos formularios de administracion o mantenimiento para cada tabla independiente(tablas que no
tienen claves foraneas) de su sistema
• Usuarios: aquí se encontraran todos los usuarios.
• Concesionarios: Aquí se encontraran todos los concecionarios
• Autos: Aquí se encontraran los autos.
2. Adjunte capturas del diseño Base de Datos de su proyecto
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 24 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 25 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 26 de 28
Nro. DD-106
PROGRAMACIÓN ORIENTADA A OBJETOS Página 27 de 28
• Se observo que se tiene que aumentar la cantidad de campos tanto en el jframe y en los metos.
• Se observo que para listar una tabla se tiene que llamar un método que liste.
• Se observo que para mostrar los datos de los campos se tiene que insertar un método model.
• Se observo que cuando seleccionamos un dato de una tabla si es un campo tipo date nos imprime un
valor en el txt que no pertenece a el tipo de valor que recibe.
• Se observo que se puede editar insertar y actualizar los datos de una tabla desde el neatbens.
• Se logro adicionar controles a un formulario en Java como los login y los listados de usuarios.
• Se logro personalizar los controles por medio de propiedades.
• Se logro adicionar código Java a los eventos de un formulario.
• Se logro listar una tabla hacer sus consultas, insertar datos actualizar eliminar.
• Se logro ejecutar aplicaciones en Java basadas en ventanas.