sábado, 30 de abril de 2016

SWING 005: GUARDAR BASE DE DATOS EN JAVA

PRACTICA DE SWING: Actividad 005: GUARDAR EN LA BASE DE DATOS 

Ing. Honoria Reyes Macedo

Gestor de Base de Datos: MySql
IDE: NetBeans, JCreator
Lenguaje de programacion: java 

INTRODUCCION

Para llevar a cabo esta práctica, es necesario haber realizado la practica anterior de swing(Actividad004): Donde se crearon las clases MaquinaFrm005.java y maquinaVo.java.

Guardar datos en una base de datos utilizando java involucra los siguientes pasos:

1.- Instalar el gestor de base de datos MySql: Se utilizo mysql-installer-community-5.6.26.0.msi

2.- Crear un proyecto: Para esta practica se crea “ProyectPOO”

            Para usar bases de datos utiliza clases de la librería java.sql:
- Utilizar la librería import java.sql.*;   
    Para utiliza las clases siguientes
Class.forName(miDriver); -->Asegura  que el DriverManager funcione, se inicializa y se registra(en este caso es "com.mysql.jdbc.Driver";)

DriverManager -->Gestiona los drivers instalados en el sistema, y se conecta
Utiliza la url: "jdbc:mysql://localhost/grupouvm": El localhost: puede ser cambiado por la IP o Nombre del equipo si el servidor se encuentra en otro equipo en la red.

Statement  --> Ejecuta sentencias sin parametros. (Tiene los métodos executeUpdate para modificar la BD(CRUD) y executeQuery para las consultas y views). Devuelve cero o mas resultados, Tambien devuelve  objetos de tipo ResultSet

PreparedStatement --> Permite ejecutar sentencias SQL con parametros de entrada.(Tiene los métodos executeUpdate para modificar y para consultar la BD(CRUD) Devuelve  objetos de tipo ResultSet.

ResultSet: Contiene los datos leidos de los campos de la base de datos(columnas). Tiene el método next() para recorrer los datos y getInt(), getString(), getDate() nos devuelven los valores

RecordSet  Hace posible obtener los datos convertidos con getString() y getObject(),


3.- Crear una base de datos (En este caso es en MySql)
      - En este caso se crea mediante la consola del sistema operativo (command)

            Nota: Se puede utilizar un software de  administtracion para crear la base de datos

4.- Configurar el driver de MySql en el proyecto
            En este caso se utilizo:  mysql-connector-java-5.1.38-bin.jar


Nota: En esta practica para la base de datos se usaron los siguientes valores:
usuario=root 
password=Mysql
y se creo la base de datos: grupouvm
con la entidad o tabla: maquina


ACTIVIDADES:

1.- INSTALAR GESTOR DE BASE DE DATOS MySql:

En esta practica se instalo la versión:  mysql-installer-community-5.6.26.0.msi



Nota: Anotar el usuario y el password que se configura al instalar para usarlos en java

2.- CREAR PROYECTO
            2.1.-  Crear un proyecto básico 








             2.2 Crear las clases: maquinaVo.java, MaquinaFrm005.java, MaquinaDAO.java





Nota:  El contenido de las clases maquinaVo.java, MaquinaFrm005.java es el 
mismo  que la practica anterior

El proyecto se vera asi:


2.3 Capturar el contenido de la clase MaquinaDAO.java
 
import java.sql.*;

import javax.swing.*;

public class MaquinaDAO {

  Connection miConexion=null;   // Canal de conexion

  ResultSet miTabla=null;   //Guarda información de las columnas(campos)

  Statement miInstruccion=null;         //Ejecuta sentencias SQL sin parámetros

  PreparedStatement  miInstruccionPrep=null;  //Ejecuta sentencias SQL con parámetros de entrada

  int miResultado;



  public MaquinaDAO() {

            iniciar();

  }

   
  public void iniciar(){
            try{
            getConexion();           
    }catch(Exception ex){                   
                        JOptionPane.showMessageDialog(null,"No se conecto a la Base de datos" + ex.getMessage(),"ERROR DE CONEXION",JOptionPane.ERROR_MESSAGE);
            }                      
  }
       
  public void getConexion() throws SQLException{
            String miDriver="com.mysql.jdbc.Driver";
            String miURL="jdbc:mysql://localhost/grupouvm";
            String miUsuario="root";
            String miPassword ="Mysql";
            try{
                        Class.forName(miDriver);  //Asegura lo que el DriverManager debe realizar                    
                        miConexion=DriverManager.getConnection(miURL, miUsuario, miPassword); //driver para cada gestor de base de datos
            }catch(ClassNotFoundException ex){
                        JOptionPane.showMessageDialog(null,"No se encontro el Driver jdbc instalado " + ex.getMessage(),"ERROR DE CONEXION",JOptionPane.ERROR_MESSAGE);                      
            }
  } 
   
  public void Alta(maquinaVo ObjMaq){
            try{
                        String miInsercion="Insert into maquina(cveMaquina,tipoMaquina,marca,situacion,status) values(?,?,?,?,?)";
                        miInstruccionPrep= miConexion.prepareStatement(miInsercion);
                        miInstruccionPrep.setInt(1,ObjMaq.getCveMaquina());
                        miInstruccionPrep.setString(2,ObjMaq.getTipoMaquina());
                        miInstruccionPrep.setString(3,ObjMaq.getMarca());
                        miInstruccionPrep.setString(4,ObjMaq.getSituacion());
                        miInstruccionPrep.setInt(5,ObjMaq.getStatus());
                        miInstruccionPrep.executeUpdate();
cerrar();
            }catch(SQLException ex){
                        JOptionPane.showMessageDialog(null,"No se encontro el Driver jdbc instalado" + ex.getMessage(),"ERROR DE CONEXION",JOptionPane.ERROR_MESSAGE);
    }                 
  }
 
  public void Modifica(maquinaVo ObjMaq){
            try{
                        String miActualizacion="Update maquina set tipoMaquina=?, marca=?, situacion=?, status=? Where cveMaquina=?";
                        miInstruccionPrep= miConexion.prepareStatement(miActualizacion);
                        miInstruccionPrep.setString(1,ObjMaq.getTipoMaquina());
                        miInstruccionPrep.setString(2,ObjMaq.getMarca());
                        miInstruccionPrep.setString(3,ObjMaq.getSituacion());
                        miInstruccionPrep.setInt(4,ObjMaq.getStatus() );
                        miInstruccionPrep.setInt(5,ObjMaq.getCveMaquina());
                        miInstruccionPrep.executeUpdate();
cerrar();
    }catch(SQLException ex){
                        JOptionPane.showMessageDialog(null,"No se encontro el Driver jdbc instalado" + ex.getMessage(),"ERROR DE CONEXION",JOptionPane.ERROR_MESSAGE);
            }                      
  }

  public void Elimina(maquinaVo ObjMaq){
            try{
                        String miEliminacion="Delete from maquina where cveMaquina=?";
                        miInstruccionPrep= miConexion.prepareStatement(miEliminacion);
                        miInstruccionPrep.setInt(1, ObjMaq.getCveMaquina());
                        miInstruccionPrep.executeUpdate();
cerrar();
    }catch(SQLException ex){
                        JOptionPane.showMessageDialog(null,"No se encontro el Driver jdbc instalado" + ex.getMessage(),"ERROR DE CONEXION",JOptionPane.ERROR_MESSAGE);
            }                      
  }

  public maquinaVo ConsultaIndiv(int clave){          
            maquinaVo maq = new maquinaVo();
            try{
                        String miConsulta="Select cveMaquina,tipoMaquina,marca,situacion,status from maquina where cveMaquina=?";
                        miInstruccionPrep= miConexion.prepareStatement(miConsulta );
                        miInstruccionPrep.setInt(1,clave);
                        miTabla= miInstruccionPrep.executeQuery();
                        while(miTabla.next()){
                                    maq.setCveMaquina(miTabla.getInt(1));
                                    maq.setTipoMaquina(miTabla.getString(2));
                                    maq.setMarca(miTabla.getString(3));
                                    maq.setSituacion(miTabla.getString(4));
                                    maq.setStatus(miTabla.getInt(5));
                        }                      
cerrar();
    }catch(SQLException ex){
                        JOptionPane.showMessageDialog(null,"No se encontro el Driver jdbc instalado" + ex.getMessage(),"ERROR DE CONEXION",JOptionPane.ERROR_MESSAGE);
            }                      
                        return maq;
  }

  public void cerrar(){
            try{
                        miTabla.close();
                        miInstruccionPrep.close();
                        miInstruccion.close();
                        miConexion.close();
            }catch(SQLException ex){
                        JOptionPane.showMessageDialog(null,"No se encontro el Driver jdbc instalado" + ex.getMessage(),"ERROR DE CONEXION",JOptionPane.ERROR_MESSAGE);
            }
  } 
}
  
 2.4.-  Ejecutar la insercion de datos desde el boton Guardar en la clase               
         MaquinaFrm005.java: Agregar las líneas en rojo

              private void jbguardarActionPerformed(ActionEvent evt) {                                         
                 jlMensajes.setText ("Voy a guardar los datos");
                  guardarEnObjeto();
                  mostrarObjeto();
                MaquinaDAO ObjDAO = new MaquinaDAO();
                ObjDAO.Alta(ObjMaquina);//Lo envia a la base de datos
             }
  
            En el explorador de windows  queda asi:



             2.5 Modificar la clase ProyectoPOO.java

                            


3.- CREAR LA BASE DE DATOS
Para crear la base de datos se debe de tener instalado Mysql
En  este caso se instalo con usuario=root  y password=Mysql

3.1 Crear un script para la base de datos
Crear un archivo en c:\ entidades.txt con la siguiente información de la tabla maquina





3.2.- Desde Inicio de Windows ejecutar Mysql



3.3 Poner en el password: Mysql + <Enter>





3.4 Crear la base de datos grupouvm con:
            create database grupouvm;  + <Enter>




3.5 Indicar el uso de la base de datos:
use grupouvm;  + <Enter>



3.6 Crear la tabla maquina desde el archivo entidades.txt:
\. C:\entidades.txt  + <Enter>



3.7.- Verificar que existe la base creada, su tabla maquina 
         y los campos de la tabla con:
show databases;  + <Enter>
show tables;  + <Enter>
desc maquina;  + <Enter>




4.- CONFIGURAR EL DRIVER DE MYSQL DENTRO DEL PROYECTO
En este caso se utilizo




4.1.- Bajar el driver  mysql-connector-java-5.3.38-bin.jar



4.2.- Copiar el driver en el proyecto:
Crear la carpeta lib dentro del proyecto y pegar el archivo  
        mysql-connector-java-5.1.38-bin.jar





4.3.- Agregar el archivo a las librerías del proyecto desde Project Settings





a)    Presionar New + Add Archive  + <Enter>





b)    Seleccionar el archivo que se guardo en la carpeta lib  + <Open>
c)    Ponerle un nombre:   MySql Connector  + <OK>





d)    Escoger el driver  + <OK>




                      Nota:  Si nuestro IDE hace caso de la variable de ambiente CLASSPATH, agregar el archivo jar





       Si se esta usando NetBeans como IDE, este  ya lo trae incorporado. 
       En el caso de Eclipse es necesario bajar el Driver

5.- COMPILAR Y EJECUTAR EL PROYECTO
5.1.-  Desde el menú compilar y ejecutar el proyecto





5.2.- Capturar los datos numericos y cadenas según sea el caso:






Presionar el botón Guardar




5.3.- Verificar si se inserto en la base de datos de MySql:
Teclear:    Select * from maquina;


         Salir de MySql






-----------------------------0-0-------------------------------------
--------------------------000-000----------------------------------