Está en la página 1de 11

ACTIVIDAD N°: 16 FECHA 07/08/2018 FECHA 14/08/2018

ENVIO: ENTREGA:

TEMA: APLICACIÓN DE OPERACIONES CRUD CON BD

UNIDAD N° 4: LISTAS

IMPLEMENTAR LAS OPERACIONES DE UPDATE Y DELETE


OBJETIVO: DENTRO DEL PROYECTO DE APLICACIÓN DE OPERACIONES
CRUD CON BD

¿COMO IMPLEMENTAR LAS OPERACIONES DE UPDATE Y DELETE


PROBLEMA: DENTRO DEL PROYECTO DE APLICACIÓN DE OPERACIONES
CRUD CON BD?

INDICADOR DE EVALUACION: CALIFICACIÓN


Cuadro 100% 50% 10%
comparativo
Descripción clara y sustancial del Descripción ambigua del tema, Descripción incorrecta del tema, sin
Profundización
cuadro y buena cantidad de algunos detalles que no clarifican el detalles significativos o escasos.
del tema
detalles. tema.
Cuadro bien organizado y Cuadro sinóptico bien focalizado pero Cuadro sinóptico impreciso y poco
Aclaración sobre el
claramente presentado así comode no suficientemente organizado. claro, sin coherencia entre las partes
tema
fácil seguimiento. que lo componen.
Cuadro sobresaliente y atractivo Cuadro sinóptico simple pero bien Cuadro sinóptico mal planteado que
Alta calidad del que cumple con los criterios de organizado con al menos tres errores no cumple con los criterios de diseño
diseño diseño planteados, sin errores de de ortografía. planteados y con más de tres errores
ortografía. de ortografía.
Los temas centrales se ubicaron Se ubicaron los temas centrales enla No se ubicaron o se ubicaron deforma
en la columna izquierda y columna izquierda pero lasvariables incorrecta los temascentrales y las
Elementos propios
encorrecto orden y en la no se colocaron de formaordenada. variables no tienenrelación con el
del cuadro
partesuperior se colocaron las La información hacereferencia al tema principal.
comparativo
variablesy la información fue tema.
acertada
La presentación/exposición La presentación/exposición fuehecha La presentación/exposición no
fuehecha en tiempo y forma, en tiempo y forma, aunquela entrega fuehecha en tiempo y forma,
Presentación del
ademásse entregó de forma limpia no fue en el formato preestablecido. ademásla entrega no se dio de la
cuadro sinóptico
en elformato pre establecido (papel formapre establecida por el docente.
odigital).
TIPO DE ACTIVIDAD
LUGAR ALCANCE FORMA
□Intraclase □Individual □Taller □Práctica en laboratorio
□Extraclase □Grupal □Síntesis, esquemas □Práctica en clase
□Caso de estudio □Resolución de problemas,
□Investigativa ejercicios

□Vinculación con la colectividad □Ensayo, artículo


□Informe de exposición
ROLES Y RESPONSABILIDADES DE LOS PARTICIPANTES EN LA TAREA:
NOMBRE ROL DESCRIPCIÓN

Melanie Romero Investigador - Analista Investigar y analizar


ACTIVIDAD:
Completar las operaciones de update y delete que faltan en el proyecto de java sobre
operaciones CRUD con base de datos realizado en clase.
Entregar un comprimido con el proyecto de Eclipse, capturas de pantalla con todas las
pruebas CRUD, y con la ficha respectiva.

PAQUETE PRINCIPAL
Clase Principal
import controlador.Controlador;
import modelo.ContactoDAO;
import vista.ContactoVista;

public class Principal {


public static void main(String[] args) {
ContactoVista vista = new ContactoVista();
ContactoDAO modelo = new ContactoDAO();
Controlador control = new Controlador(vista, modelo);

vista.setControlador(control);
vista.arranca();
}
}

PAQUETE CONTROLADOR
Clase Controlador
package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import modelo.Contacto;
import modelo.ContactoDAO;
import vista.ContactoVista;

public class Controlador implements ActionListener {


private ContactoVista vista;
private ContactoDAO modelo;

public Controlador(ContactoVista vista, ContactoDAO modelo) {


this.vista = vista;
this.modelo = modelo;
}

@Override
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()) {
case "crear":
if(modelo.crear(vista.getContacto())) {
JOptionPane.showMessageDialog(vista, "Contacto
ingresado exitosamente", "Información", JOptionPane.INFORMATION_MESSAGE);
}
else{
JOptionPane.showMessageDialog(vista, "Contacto NO
se pudo ingresar", "Error", JOptionPane.ERROR_MESSAGE);
}
vista.limpiar();
break;
case "consultar":
Contacto contacto = modelo.consultar(vista.getEmail());
if(contacto != null) {
vista.verContacto(contacto);
JOptionPane.showMessageDialog(vista, "Contacto
consultado exitosamente", "Información", JOptionPane.INFORMATION_MESSAGE);
}
else
JOptionPane.showMessageDialog(vista, "No existe un
contacto con ese email", "Error", JOptionPane.ERROR_MESSAGE);
break;
case "actualizar":
if(modelo.actualizar(vista.getContacto())) {
JOptionPane.showMessageDialog(vista, "Contacto
actualizado exitosamente", "Información", JOptionPane.INFORMATION_MESSAGE);
}
else{
JOptionPane.showMessageDialog(vista, "Contacto NO
se pudo actualizar", "Error", JOptionPane.ERROR_MESSAGE);
}
vista.limpiar();
break;
case "eliminar":
if(modelo.eliminar(vista.getContacto())) {
JOptionPane.showMessageDialog(vista, "Contacto
eliminado exitosamente", "Información", JOptionPane.INFORMATION_MESSAGE);
}
else{
JOptionPane.showMessageDialog(vista, "Contacto NO
se pudo eliminar", "Error", JOptionPane.ERROR_MESSAGE);
}
vista.limpiar();
break;
case "limpiar":
vista.limpiar();
break;
}

}
}
PAQUETE MODELO
Clase Conexión
package modelo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexion {

public static Connection conectar() {


Connection con = null;
String user = "postgres";
String password = "megamanxz123";
String url = "jdbc:postgresql://127.0.0.1:5432/Programacion3";

try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection(url, user, password);
}
catch(SQLException e) {
System.out.println("No se pudo conectar a la base de
datos");
e.printStackTrace();
}
catch (ClassNotFoundException e) {
System.out.println("Driver de la BD no instalado");
e.printStackTrace();
}

return con;
}
}

Clase Contacto
package modelo;

import java.time.LocalDate;

public class Contacto{

/**
*
*/
private String nombre;
private transient String email;
private LocalDate nacimiento;
private double sueldo;

/**
* @param nombre
* @param email
* @param nacimiento *
* @param sueldo
*/
public Contacto(String nombre, String email, LocalDate nacimiento,
double sueldo) {
super();
this.nombre = nombre;
this.email = email;
this.nacimiento = nacimiento;
this.sueldo = sueldo;
}

/**
* @return the nombre
*/
public String getNombre() {
return nombre;
}

/**
* @param nombre the nombre to set
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}

/**
* @return the email
*/
public String getEmail() {
return email;
}

/**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
}

/**
* @return the nacimiento
*/
public LocalDate getNacimiento() {
return nacimiento;
}

/**
* @param nacimiento the nacimiento to set
*/
public void setNacimiento(LocalDate nacimiento) {
this.nacimiento = nacimiento;
}

/**
* @return the sueldo
*/
public double getSueldo() {
return sueldo;
}

/**
* @param sueldo the sueldo to set
*/
public void setSueldo(double sueldo) {
this.sueldo = sueldo;
}

@Override
public String toString() {
return "Contacto [nombre=" + nombre + ", email=" + email + ",
nacimiento=" + nacimiento + ", sueldo=" + sueldo + "]";
}
}

ClaseContactoDAO
package modelo;

import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class ContactoDAO {

public boolean crear(Contacto contacto) {


boolean creado = false;

Connection con = null;


Statement stm = null;
String sql = "insert into
contacto(nombre,email,nacimiento,sueldo) values('" + contacto.getNombre() +
"','" + contacto.getEmail() + "','" + Date.valueOf(contacto.getNacimiento())
+ "'," + contacto.getSueldo() +");";

try {
con = Conexion.conectar();
stm = con.createStatement();
stm.execute(sql);
creado = true;
stm.close();
con.close();
}
catch(SQLException e) {
System.out.println("Error: Clase ContactoDAO, método
crear");
e.printStackTrace();
}
return creado;
}

/**
* Devuelve el contacto desde la base datos consultado por email
* @param email E-mail del contacto a consultar
* @return Contacto consultado o null si no existe alguno con el email
ingresado
*/
public Contacto consultar(String email) {
Statement stm = null;
Connection con = null;
Contacto contacto = null;
ResultSet rs = null;
String sql = "select nombre, email, nacimiento, sueldo from
contacto where email = '" + email + "';";

try {
con = Conexion.conectar();
stm = con.createStatement();
rs = stm.executeQuery(sql);
if(rs.next()) {
contacto = new Contacto(rs.getString(1),
rs.getString(2), LocalDate.parse(rs.getString(3),
DateTimeFormatter.ofPattern("yyyy-MM-dd")) , rs.getDouble(4));
}
rs.close();
stm.close();
con.close();
}
catch(SQLException e) {
System.out.println("Error: Clase ContactoDAO, método
consultar");
e.printStackTrace();
}
return contacto;
}

public boolean actualizar(Contacto contacto) {


boolean actualizado = false;

Connection con = null;


Statement stm = null;
String sql = "update contacto set
nombre='"+contacto.getNombre()+"' , email='"+contacto.getEmail()+
"', nacimiento='"+contacto.getNacimiento()+"',
sueldo='"+contacto.getSueldo()+"' where email = '" + contacto.getEmail() +
"';";

try {
con = Conexion.conectar();
stm = con.createStatement();
stm.execute(sql);
actualizado = true;
stm.close();
con.close();
}
catch(SQLException e) {
System.out.println("Error: Clase ContactoDAO, método
actualizar");
e.printStackTrace();
}
return actualizado;
}

public boolean eliminar(Contacto contacto) {


boolean eliminado = false;

Connection con = null;


Statement stm = null;
String sql = "delete from contacto where
email='"+contacto.getEmail()+"';";
try {
con = Conexion.conectar();
stm = con.createStatement();
stm.execute(sql);
eliminado = true;
stm.close();
con.close();
}
catch(SQLException e) {
System.out.println("Error: Clase ContactoDAO, método
eliminar");
e.printStackTrace();
}
return eliminado;
}
}

PAQUETE VISTA
Clase ContactoVista
package vista;

import javax.swing.JFrame;
import javax.swing.JLabel;

import java.awt.Component;
import java.awt.Font;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import javax.swing.JTextField;
import controlador.Controlador;
import modelo.Contacto;
import javax.swing.JButton;
import java.awt.Rectangle;

@SuppressWarnings("serial")
public class ContactoVista extends JFrame {
private JTextField txtNombre;
private JTextField txtEmail;
private JTextField txtNacimiento;
private JTextField txtSueldo;
private JButton btnCrear;
private JButton btnConsultar;
private JButton btnActualizar;
private JButton btnEliminar;
private JButton btnLimpiar;

public ContactoVista() {
setResizable(false);
setBounds(new Rectangle(0, 0, 420, 210));
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Contacto");
getContentPane().setLayout(null);

JLabel lblGestinDeContactos = new JLabel("Gesti\u00F3n de


Contactos");
lblGestinDeContactos.setFont(new Font("Tahoma", Font.BOLD, 11));
lblGestinDeContactos.setBounds(10, 11, 166, 14);
getContentPane().add(lblGestinDeContactos);
JLabel lblNombre = new JLabel("Nombre: ");
lblNombre.setBounds(10, 36, 78, 14);
getContentPane().add(lblNombre);

JLabel lblEmail = new JLabel("E-mail: ");


lblEmail.setBounds(10, 61, 78, 14);
getContentPane().add(lblEmail);

JLabel lblNacimiento = new JLabel("Nacimiento (aaaa-mm-dd): ");


lblNacimiento.setBounds(10, 86, 166, 14);
getContentPane().add(lblNacimiento);

JLabel lblSueldo = new JLabel("Sueldo: ");


lblSueldo.setBounds(10, 111, 78, 14);
getContentPane().add(lblSueldo);

txtNombre = new JTextField();


txtNombre.setBounds(92, 33, 300, 20);
getContentPane().add(txtNombre);
txtNombre.setColumns(10);

txtEmail = new JTextField();


txtEmail.setColumns(10);
txtEmail.setBounds(92, 61, 300, 20);
getContentPane().add(txtEmail);

txtNacimiento = new JTextField();


txtNacimiento.setText("");
txtNacimiento.setBounds(185, 83, 123, 20);
getContentPane().add(txtNacimiento);
txtNacimiento.setColumns(10);

txtSueldo = new JTextField();


txtSueldo.setBounds(92, 108, 106, 20);
getContentPane().add(txtSueldo);
txtSueldo.setColumns(10);

btnCrear = new JButton("Crear");


btnCrear.setActionCommand("crear");
btnCrear.setBounds(10, 137, 90, 23);
getContentPane().add(btnCrear);

btnConsultar = new JButton("Consultar");


btnConsultar.setActionCommand("consultar");
btnConsultar.setBounds(105, 137, 90, 23);
getContentPane().add(btnConsultar);

btnActualizar = new JButton("Actualizar");


btnActualizar.setActionCommand("actualizar");
btnActualizar.setBounds(200, 137, 105, 23);
getContentPane().add(btnActualizar);

btnEliminar = new JButton("Eliminar");


btnEliminar.setActionCommand("eliminar");
btnEliminar.setBounds(310, 137, 90, 23);
getContentPane().add(btnEliminar);

btnLimpiar = new JButton("Limpiar");


btnLimpiar.setActionCommand("limpiar");
btnLimpiar.setBounds(310, 107, 90, 23);
getContentPane().add(btnLimpiar);
}

public void setControlador(Controlador control) {


/*btnCrear.addActionListener(control);
btnConsultar.addActionListener(control);
btnActualizar.addActionListener(control);
btnEliminar.addActionListener(control);
btnLimpiar.addActionListener(control);*/

//Poner a todos los botones de este JFrame el mismo controlador


for(Component componente :
this.getContentPane().getComponents()) {
if(componente instanceof JButton)
((JButton)componente).addActionListener(control);
}
}

public String getEmail() {


return txtEmail.getText();
}

public Contacto getContacto() {


return new Contacto(this.txtNombre.getText(),
this.txtEmail.getText(), LocalDate.parse(this.txtNacimiento.getText(),
DateTimeFormatter.ofPattern("yyyy-MM-dd")),
Double.parseDouble(this.txtSueldo.getText()));
}

public void arranca() {


this.setLocationRelativeTo(null);
this.setVisible(true);
}

public void verContacto(Contacto contacto) {


txtNombre.setText(contacto.getNombre());
txtEmail.setText(contacto.getEmail());
txtNacimiento.setText(contacto.getNacimiento().toString());
txtSueldo.setText(String.valueOf(contacto.getSueldo()));
}

/**
* Borra el texto de todos los JTextField de esta ventana
*/
public void limpiar() {
for(Component componente :
this.getContentPane().getComponents()) {
if(componente instanceof JTextField)
((JTextField)componente).setText(null);
}
}
}

También podría gustarte