Вы находитесь на странице: 1из 19

Para el siguiente ejemplo se necesitan los siguientes programas.

Paso 1:
Activamos el wampServer.

WampServer Activado
Paso 2:
Abrimos MySQL Workbench

2.1 Primero conectamos al wampServer.


2.2 Creamos la base de datos en este caso se llama farmacia.
Paso 3:
3.1 Abrimos NetBeans creamos un proyecto nuevo con los paquetes y las siguientes
clases.

3.2 Se añade el jar mysql-connector-java-5.1.40


Explicación de las clases creadas en el proyecto.
Paquete Vista

Clase JFrameCliente.java

Paquete Modelo

Clase ClienteVO.java

package Modelo;

public class ClienteVO {

//Atributos de la clase Cliente

private String nombre;

private String id;

private String direccion;

//Método Constructor sin parametros

public ClienteVO() {

this.nombre="";

this.id="";

this.direccion="";}

//Método Constructor con parametros

public ClienteVO(String id, String nombre, String direccion) {


this.nombre = nombre;

this.id = id;

this.direccion = direccion;}

//Getters Setters

public String getNombre() {

return nombre;}

public void setNombre(String nombre) {

this.nombre = nombre;}

public String getId() {

return id;}

public void setId(String id) {

this.id = id;}

public String getDireccion() {

return direccion;}

public void setDireccion(String direccion) {

this.direccion = direccion;}

Paquete Modelo

Clase Conexion.java

package Modelo;

import java.sql.*;

public class Conexion {

String bd="farmacia"; //nombre de la base

String login="root"; //usuario por defecto es root

String passw="";//en este caso no tiene contraseña

String url="jdbc:mysql://localhost/" + bd;//se conecta al localhost con la base

Connection objConex=null;//inicializa el objeto de tipo Connection


public Conexion (){

try {

Class.forName("com.mysql.jdbc.Driver");

objConex = DriverManager.getConnection(url,login,passw);//Nos devuelve la


conexion que tiene 3 parametros

if(objConex!=null)

System.out.println("Conexion a BD Farmacia ok");

} catch (ClassNotFoundException ex) {

System.out.println(ex);

} catch (SQLException o){

System.out.println(o);

public Connection obtenerConexion(){

return objConex;}

Paquete Modelo

Clase ClienteDAO.java

package Modelo;

import java.sql.*;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import javax.swing.JTable;

import javax.swing.JTextField;

public class ClienteDAO {

Conexion con; //Objeto de tipo conexion

public ClienteDAO() {
con=new Conexion();

public void adicionarCliente(ClienteVO cli){

Connection acceso = con.obtenerConexion(); //Se obtiene la conexion

//Se inserta de acuerdo al mismo nombre de los atributos de la base de datos

String sql="INSERT INTO cliente(id_Cliente,nombre_Cliente,direccion_Cliente)


VALUES(?,?,?)";

try{

PreparedStatement ps= acceso.prepareStatement(sql);//Establece la conexion


con la base de datos

//Se inserta los datos del cliente utilizando el objeto de tipo clienteVO

//y accediendo a los métodos getters

ps.setString(1, cli.getId());

ps.setString(2, cli.getNombre());

ps.setString(3, cli.getDireccion());

//Se ejecutan los datos insertados

ps.executeUpdate();

}catch(SQLException ex){

System.out.println(ex);// En caso de algún error con la conexión a la base será


notificado

}}

public ArrayList<ClienteVO> mostrarClientes(){

//Se instancia una lista de tipo ClienteVO

ArrayList <ClienteVO> listaB=new ArrayList <ClienteVO>();

//Se instancia un objeto de tipo ClienteVO

ClienteVO cli;

try{

Connection acceso = con.obtenerConexion();


//Establece la conexion con la base

PreparedStatement ps= acceso.prepareStatement("select * from cliente");

//Se ejecuta el Query de la base

ResultSet rs=ps.executeQuery();

while (rs.next()){

//se establecen los datos en la tabla de acuerdo al orden

//Utilizando los métodos setter

cli=new ClienteVO();

cli.setId(rs.getString(1));

cli.setNombre(rs.getString(2));

cli.setDireccion(rs.getString(3));

//Se añade a la lista de tipo clienteVO

listaB.add(cli);

}catch(SQLException ex){

//Se notifica se hay algun error con la conección

System.out.println(ex);

//Se retorna la lista

return listaB;}

public void eliminarCliente(String idEliminar,JTable jTable_Clientes){

//Los parametros para este método son los id a eliminar

//Y la tabla de los clientes ingresados

//Se instancia un objeto de tipo Conexion

Conexion objConexion=new Conexion();

//Se obtiene el acceso a la base

Connection acceso = objConexion.obtenerConexion();


//Se obtiene la seleccion que se desea eliminar

//guardando la fila que se seleccione

int fila=jTable_Clientes.getSelectedRow();

//Se extrae el idCliente de la seleccion que se realize

idEliminar=jTable_Clientes.getValueAt(fila,0).toString();

//Notificacion de eliminacion del cliente segun su id

JOptionPane.showMessageDialog(null,"Se ha eliminado el "+idEliminar);

try{

//Se establece la conexion con la base de datos

PreparedStatement pst=acceso.prepareStatement("DELETE FROM cliente


WHERE id_cliente='"+idEliminar+"'");

//Se ejecuta el comando delete segun el idEliminar del cliente

pst.executeUpdate();

}catch(Exception e){

//Se notifica si hubo algun error con la conexion a la base de datos

System.out.println(e);

}}

public void modificar(String idModificar,JTextField txtName,JTextField txtDireccion){

//Para este método se seleccionará el id de la tabla a modificar

//Se instancia un objeto de tipo Conexion

Conexion objConexion=new Conexion();

//Se obtiene la conexion a la base de datos

Connection acceso = objConexion.obtenerConexion();

try{

//Se establece la conexion con la base de datos

//Los únicos datos que se pueden notificar es el nombre y la dirección


PreparedStatement pst=acceso.prepareStatement("UPDATE cliente SET
nombre_cliente='"+txtName.getText()+"',direccion_cliente='"+txtDireccion.getText()+"'
WHERE id_cliente='"+idModificar+"' ");

//Se extrae los datos de la base a los JTextField del JFrame de la vista

txtName.getText();

txtDireccion.getText();

//Se executa el update con los nuevos datos insertados

pst.executeUpdate();

}catch(Exception e){

//Se notifica si hubo algun error con la base de datos

System.out.print(e.getMessage());

}}

Paquete Controlador

Clase ControladorCliente.java

package Controlador;

import Modelo.ClienteDAO;

import Modelo.ClienteVO;

import Vista.jFrameCliente;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import javax.swing.table.DefaultTableModel;

public class ControladorCliente implements ActionListener{

//Se crea un objeto de tipo JFrameCliente que sirve para la vista

jFrameCliente objVista = new jFrameCliente();

//Objetos de tipo cliente DAO y clientoVO


ClienteDAO objDAO = new ClienteDAO();

ClienteVO objVO=new ClienteVO();

//Variables para poder extraer los id que servirán para

//eliminar y modificar

String idModificar="";

String idEliminar="";

//Metodo Contructor

public ControladorCliente(jFrameCliente objVista){

this.objVista=objVista;

//Se añade las acciones de los botones

//Explicados en el jFrameCliente.java

objVista.btnAdd.addActionListener(this);

objVista.btnClear.addActionListener(this);

objVista.btnList.addActionListener(this);

objVista.jmModificar.addActionListener(this);

objVista.jmEliminar.addActionListener(this);

objVista.btnUpdate.addActionListener(this);

public void actionPerformed(ActionEvent e){

//Se obtiene la accion de cada boton

//Boton Ingresar

if (e.getSource() == objVista.btnAdd){

//Se extrae el texto de los JTextfiel del JFrame

String nombre = objVista.txtName1.getText();

String id = objVista.txtId.getText();

String dir = objVista.txtAddress.getText();


JOptionPane.showMessageDialog(null, "Cliente Registrado");

//Objeto de tipo ClienteVO con parámetros

objVO = new ClienteVO(id,nombre,dir);

//Metodo para insertar cliente

objDAO.adicionarCliente(objVO);

//Boton Limpiar

else if(e.getSource()==objVista.btnClear){

//Limpia los JTextField del JFrame

this.objVista.txtId.setText(null);

this.objVista.txtName1.setText(null);

this.objVista.txtAddress.setText(null);

//Boton Mostrar

else if(e.getSource() == objVista.btnList){

//Lista de tipo ClienteVO

ArrayList <ClienteVO> lista = new ArrayList <ClienteVO>();

//Muestra todos los clientes en la tabla

lista=objDAO.mostrarClientes();

//Se desabilita la tabla para que no se pueda editar

String titulos[]={"ID","NOMBRE","DIRECCION"};

DefaultTableModel modeloT = new DefaultTableModel(null,titulos){

@Override

public boolean isCellEditable(int filas,int columnas){

if(columnas==3){

return true;

}else{
return false;

};

//Establece modelo de la tabla

objVista.jTable_Clientes.setModel(modeloT);

Object[] columna = new Object[3];

//Se añade una fila de acuerdo a los clientes ingresados

//y se extrae los datos con la ayuda de los getters

for (int i=0;i<lista.size();i++){

columna[0]=lista.get(i).getId();

columna[1]=lista.get(i).getNombre();

columna[2]=lista.get(i).getDireccion();

modeloT.addRow(columna);

//JMenuItem Eliminar de la tabla

else if(e.getSource()==objVista.jmEliminar){

//Se guarda la fila de la cual se quiere eliminar

int fila=objVista.jTable_Clientes.getSelectedRow();

//Se extrae el id de la fila a eliminar

idEliminar=objVista.jTable_Clientes.getValueAt(fila,0).toString();

//Se llama al método para eliminar de la base y de la tabla

objDAO.eliminarCliente(idEliminar,objVista.jTable_Clientes);

//JMenuItem Modificar de la tabla

else if(e.getSource()==objVista.jmModificar){
//Se guarda la fila de la cual se quiere modificar

int fila=objVista.jTable_Clientes.getSelectedRow();

if(fila>=0){

objVista.txtId.setText(objVista.jTable_Clientes.getValueAt(fila,0).toString());

objVista.txtName1.setText(objVista.jTable_Clientes.getValueAt(fila,1).toString());

objVista.txtAddress.setText(objVista.jTable_Clientes.getValueAt(fila,2).toString());

//El id no es modificable

objVista.txtId.setEditable(false);

//Se extrae el id a eliminar y sus datos a los JTextField del JFrame

idModificar=(objVista.jTable_Clientes.getValueAt(fila,0).toString());

}else{

//Se notificara si no se encuentran datos a notificar

JOptionPane.showMessageDialog(null,"No se encontro dato a modificar");

//Boton Modificar

else if(e.getSource()==objVista.btnUpdate){

//Se guarda los datos llamando al método y cambiando

//el nombre o la direccion

objDAO.modificar(idModificar, objVista.txtName1, objVista.txtAddress);

}
Paquete farmaciamvc

Clase GestorFarnmacia.java

package farmaciamvc;

import Controlador.ControladorCliente;

import Vista.jFrameCliente;

public class GestorFarmacia {

public static void main(String[] args) {

// TODO code application logic here

//Objeto de tipo de vista

jFrameCliente vistaC=new jFrameCliente();

//Controlar el JFrame

ControladorCliente control = new ControladorCliente(vistaC);

//Visible el JFrame

vistaC.setVisible(true);

Ejecución del Programa

Вам также может понравиться