ejercicios java y mysql

Upload: elisabeth-hernandez

Post on 04-Mar-2016

347 views

Category:

Documents


24 download

DESCRIPTION

Ejemplo 1 de Conexión Entre Java y Mysql como elaborar una reserva hotelera por java utilizando Mysql

TRANSCRIPT

  • EJEMPLO DE CONEXION ENTRE JAVA Y MYSQL

    REQUERIMIENTOS

    JSDK de Java

    Netbeans

    Servidor WEB (Wampserver)

    1. A travs del phpmyadmin, Crearemos una base de datos llamada

    hotel

    2. Dentro de la base de datos hotel, crearemos una tabla llamada

    habitacion, con los siguientes campos y tipos de datos:

    idhabitacion int(3) not null auto_increment

    numero varchar(4) not null

    piso varchar(2) not null

    descripcion varchar(512)

    caracteristicas varchar(512)

    precio_diario decimal(7,2) not null

    estado varchar(15) not null

    tipo_habitacion varchar(20)

    3. Descripcin del entorno de trabajo en Netbeans:

    Logica:

    Datos

  • Presentacin

    4. Crear un nuevo proyecto, lo vamos a llamar

    SistemaReservasHoteleras, omitiremos la creacin de la clase Main.

    5. Una vez ubicados en Sourcepackages, crearemos los siguientes

    paquetes:

    Datos

    Logica

    Presentacion

    Files

    6. Instalar el conector mysql connector Java.

    Clic derecho sobre Libraries > selecciono la ruta donde se

    encuentra el conector> Abrir.

    7. Crear la clase de conexion entre Java y Mysql.

    Clic sobre el paquete Logica > Crea una nueva clase llamada

    conexion.

    La codifico de la siguiente manera:

    package Logica;

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

    import java.sql.SQLException; import javax.swing.JOptionPane;

    public class conexion {

    public String db="hotel"; public String url="jdbc:mysql://127.0.0.1/" +db;

    public String user="root"; public String pass="root";

    public conexion()

  • {

    }

    public Connection conectar()

    { Connection link=null;

    try { Class.forName("org.gjt.mm.mysql.Driver");

    link=DriverManager.getConnection(this.url, this.user,this.pass); } catch (ClassNotFoundException | SQLException e) {

    JOptionPane.showConfirmDialog(null, e); }

    return link; }

    }

    8. Crear el formulario para ingresar los datos de la habitacion

    Clic derecho en el paquete presentacion > New >

    JFrameForm>Class Name: frmhabitacion > Finish

    Ampliamos el tamao del formulario.

  • 9. Agregamos lo componentes del formulario

    Agrego un Label> en la propiedad Text> Font > Size: 18>Negrita

    Debajo de la etiqueta, agregamos un contenedor tipo Panel , lo

    extendemos y cambiamos el color de fondo.

    Clic derecho sobre el Panel >Propiedades>Border >Title: Registro

    de habitaciones> Ok> Close

    10. Voy insertando las etiquetas y cajas de texto para capturar la

    informacin de la habitacin.

    Arrastro una caja de texto > clic derecho> Change Variable

    Name>txtidhabitacion

    Arrastro una etiqueta y le cambio el nombre por Numero

    Arrastro una caja de texto> clic derecho> Change Variable

    Name>txtnumero

    Arrastro una etiqueta y le cambio el nombre por Piso

    Arrastro un ComboBox> clic derecho> Change Variable

    Name>cbopiso> Model> Borro lo que encuentre y relleno los pisos

    desde el 1 hasta el 7 , uno por linea.

    Arrastro una etiqueta y le cambio el nombre por Descripcion

  • Arrastro un Area de texto> clic derecho> Change Variable

    Name>txtdescripcion

    Arrastro una etiqueta y le cambio el nombre por Caracteristicas

    Arrastro un Area de texto> clic derecho> Change Variable

    Name>txtcaracteriticas

    Arrastro una etiqueta y le cambio el nombre por Valor Diario

    Arrastro una caja de texto> clic derecho> Change Variable

    Name>txtprecio_diario

    Arrastro una etiqueta y le cambio el nombre por Estado

    Arrastro un ComboBox> clic derecho> Change Variable

    Name>cboestado> Model> Borro lo que encuentre y relleno con

    los siguientes valores: Disponible, Ocupado, Mantenimiento , uno

    por linea.

    Arrastro una etiqueta y le cambio el nombre por Tipo de

    Habitacion

    Arrastro un ComboBox> clic derecho> Change Variable

    Name>cbotipo_habitacion> Model> Borro lo que encuentre y

    relleno con los siguientes valores: Individual,Matrimonial,familiar ,

    Presidencial uno por linea.

    Agrego 3 JButton( Uno para Nuevo, Guardar, Cancelar)

    Selecciono el primero y doy clic sobre la propiedad Text> Digito

    Nuevo

    Selecciono el segundo y doy clic sobre la propiedad Text> Digito

    Guardar

    Selecciono el tercero y doy clic sobre la propiedad Text> Digito

    Cancelar

    Doy clic derecho sobre el primer boton > Change Variable

    Name>btnnuevo

    Doy clic derecho sobre el segundo boton > Change Variable

    Name>btnguardar

    Doy clic derecho sobre el tercer boton > Change Variable

    Name>btncancelar

    Agregamos un nuevo Panel en la parte derecha y lo ampliamos.

  • 11. Le coloco otro color de fondo, Clic derecho sobre el Panel

    >Propiedades>Border >Title: Registro de habitaciones> Ok> Close

    12. Ingreso un control de tipo tabla y lo dibujo en el Panel (Registro

    de habitaciones).

    Encima de la tabla Arrastro una etiqueta y le cambio el nombre

    por Buscar

    Arrastro una caja de texto> clic derecho> Change Variable

    Name>txtbuscar

    Dejo en blanco la propiedad Text.

    En el Panel Registro de habitaciones agrego Agrego 3 JButton(

    Uno para Buscar, Eliminar, Salir)

    Selecciono el primero y doy clic sobre la propiedad Text> Digito

    Buscar

    Selecciono el segundo y doy clic sobre la propiedad Text> Digito

    Eliminar

    Selecciono el tercero y doy clic sobre la propiedad Text> Digito

    Salir

    Doy clic derecho sobre el primer boton > Change Variable

    Name>btnbuscar

    Doy clic derecho sobre el segundo boton > Change Variable

    Name>btneliminar.

    Doy clic derecho sobre el tercer boton > Change Variable

    Name>btnsalir

  • 13. Doy clic derecho sobre la tabla >Propiedades> Change Variable

    Name: tablalistado

    14. Arrastro una etiqueta y le cambio el nombre por Registros >

    Propiedades> Change Variable Name: lbltotalregistros

  • PARTE LOGICA Y MANEJO DE DATOS

    1. En el paquete Datos, creo una clase llamada vhabitacion

    2. En la clase creo los siguientes atributos

    package Datos;

    //creo la clase vhabitacion con los mismos atributos que la tabla

    public class vhabitacion {

    private int idhabitacion;

    private String numero; private String piso;

    private String descripcion; private String caracteristicas;

    private Double precio_diario; private String estado;

    private String tipo_habitacion;

    3. Dentro de la clase vhabitacion> clic derecho>Insert Code>

    Constructor> Chequeo todos los atributos> Clic en Generate

    //Creo un mtodo constructor como parmetros todos los atributos de la

    clase

    public vhabitacion(int idhabitacion, String numero, String piso, String descripcion, String caracteristicas, Double precio_diario, String estado,

    String tipo_habitacion) { this.idhabitacion = idhabitacion;

    this.numero = numero; this.piso = piso;

    this.descripcion = descripcion; this.caracteristicas = caracteristicas;

    this.precio_diario = precio_diario; this.estado = estado;

    this.tipo_habitacion = tipo_habitacion; }

  • 4. Doy un Enter > clic derecho>Insert Code> Constructor> No

    chequeo ningun atributo> Clic en Generate

    //Creo un metodo publico vacio

    public vhabitacion() { }

    5. Doy un Enter > clic derecho>Insert Code>Getters and Setters

    //Creo los getters and setters por cada atributo

    public int getIdhabitacion() { return idhabitacion;

    }

    public void setIdhabitacion(int idhabitacion) {

    this.idhabitacion = idhabitacion; }

    public String getNumero() {

    return numero; }

    public void setNumero(String numero) {

    this.numero = numero; }

    public String getPiso() {

    return piso; }

    public void setPiso(String piso) { this.piso = piso;

    }

    public String getDescripcion() { return descripcion;

    }

    public void setDescripcion(String descripcion) { this.descripcion = descripcion;

  • }

    public String getCaracteristicas() {

    return caracteristicas;

    }

    public void setCaracteristicas(String caracteristicas) { this.caracteristicas = caracteristicas;

    }

    public Double getPrecio_diario() { return precio_diario;

    }

    public void setPrecio_diario(Double precio_diario) { this.precio_diario = precio_diario;

    }

    public String getEstado() {

    return estado; }

    public void setEstado(String estado) {

    this.estado = estado; }

    public String getTipo_habitacion() {

    return tipo_habitacion; }

    public void setTipo_habitacion(String tipo_habitacion) {

    this.tipo_habitacion = tipo_habitacion; }

    }//Cierro la clase

    6. Guardo los cambios

    7. En la carpeta Lgica vamos a crear la clase > fhabitacion

  • 8. Vamos a crear la siguiente codificacin en dicha clase

    package Logica;

    import Datos.vhabitacion;

    import java.sql.Connection; import java.sql.PreparedStatement;

    import java.sql.ResultSet; import java.sql.Statement;

    import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel;

    public class fhabitacion {

    //Creo una instancia a la conexion

    private conexion mysql=new conexion();

    private Connection cn=mysql.conectar(); private String sSQL="";

    public Integer totalregistros;

    public DefaultTableModel mostrar(String buscar){

    DefaultTableModel modelo;

    //creo un vector para almacenar los titulos de las columnas

    String [] titulos = {"ID","Nmero","Piso","Descripcin","Caracteristicas","Precio","Estado","

    Tipo habitacin"};

    //Otro vector para almacenar los registros resultantes

    String [] registro =new String [8];

    totalregistros=0; modelo = new DefaultTableModel(null,titulos);

    sSQL="select * from habitacion where piso like '%"+ buscar + "%'

    order by idhabitacion";

    try {

  • //Este objeto sirve para procesar una sentencia SQL

    esttica Statement st= cn.createStatement();

    //Los resultados producidos por ella se almacenan en este objeto

    ResultSet rs=st.executeQuery(sSQL);

    //Recorrro cada registro usando un ciclo

    while(rs.next()){

    registro [0]=rs.getString("idhabitacion"); registro [1]=rs.getString("numero");

    registro [2]=rs.getString("piso"); registro [3]=rs.getString("descripcion");

    registro [4]=rs.getString("caracteristicas"); registro [5]=rs.getString("precio_diario");

    registro [6]=rs.getString("estado");

    registro [7]=rs.getString("tipo_habitacion");

    totalregistros=totalregistros++; modelo.addRow(registro);

    }

    return modelo;

    } catch (Exception e) { JOptionPane.showConfirmDialog(null, e);

    return null; }

    }

    /*creo el metodo para insertar los datos trayendo la clase completa vhabitacion con todos sus atributos*/

    public boolean insertar (vhabitacion dts){

    sSQL="insert into habitacion (numero,piso,descripcion,caracteristicas,precio_diario,estado,tipo_habit

    acion)" + "values (?,?,?,?,?,?,?)";

  • try {

    /*Preparamos la consulta donde dts es una instancia de

    la clase vhabitacion*/

    PreparedStatement pst=cn.prepareStatement(sSQL);

    pst.setString(1, dts.getNumero()); pst.setString(2, dts.getPiso());

    pst.setString(3, dts.getDescripcion()); pst.setString(4, dts.getCaracteristicas());

    pst.setDouble(5, dts.getPrecio_diario()); pst.setString(6, dts.getEstado());

    pst.setString(7, dts.getTipo_habitacion());

    /*Esta variable almacenara el resulto de la ejecucion del

    statement*/

    int n=pst.executeUpdate();

    //esta variable me determina si se cumple o no la

    insercion de registros

    return n!=0;

    } catch (Exception e) { JOptionPane.showConfirmDialog(null, e);

    return false; }

    }

    public boolean editar (vhabitacion dts){

    //La actualizacion del registro la hago a traves del campo

    idhabitacion

    sSQL="update habitacion set numero=?,piso=?,descripcion=?,caracteristicas=?,precio_diario=?,estad

    o=?,tipo_habitacion=?"+ " where idhabitacion=?";

  • try {

    PreparedStatement pst=cn.prepareStatement(sSQL); pst.setString(1, dts.getNumero());

    pst.setString(2, dts.getPiso());

    pst.setString(3, dts.getDescripcion()); pst.setString(4, dts.getCaracteristicas());

    pst.setDouble(5, dts.getPrecio_diario()); pst.setString(6, dts.getEstado());

    pst.setString(7, dts.getTipo_habitacion()); pst.setInt(8, dts.getIdhabitacion());

    int n=pst.executeUpdate();

    return n!=0;

    } catch (Exception e) {

    JOptionPane.showConfirmDialog(null, e); return false;

    }

    }

    public boolean eliminar (vhabitacion dts){ //Nuevamente el borrado del registro la hago a traves del

    campo idhabitacion

    sSQL="delete from habitacion where idhabitacion=?";

    try {

    PreparedStatement pst=cn.prepareStatement(sSQL);

    pst.setInt(1, dts.getIdhabitacion());

    int n=pst.executeUpdate();

    return n!=0;

    } catch (Exception e) {

    JOptionPane.showConfirmDialog(null, e); return false;

    } }

    }

  • 9. Nos dirigimos al formulario frmhabitacion en el paquete de

    Presentacin. y creamos el siguiente cdigo alli.

    package Presentacion;

    import Datos.vhabitacion;

    import Logica.fhabitacion; import javax.swing.JOptionPane;

    import javax.swing.table.DefaultTableModel;

    public class frmhabitacion extends javax.swing.JFrame {

    public frmhabitacion() { initComponents();

    mostrar(""); inhabilitar();

    }

    private String accion = "guardar";

    //Ocultar los campos que no se desean visualizar en la tabla void ocultar_columnas() {

    tablalistado.getColumnModel().getColumn(0).setMaxWidth(0); tablalistado.getColumnModel().getColumn(0).setMinWidth(0);

    tablalistado.getColumnModel().getColumn(0).setPreferredWidth(0);

    }

    //campos ocultos o no disponibles

    void inhabilitar() { txtidhabitacion.setVisible(false);

    cbopiso.setEnabled(false); txtnumero.setEnabled(false);

    txtdescripcion.setEnabled(false); txtcaracteristicas.setEnabled(false);

    txtprecio_diario.setEnabled(false); cboestado.setEnabled(false);

  • cbotipo_habitacion.setEnabled(false);

    btnguardar.setEnabled(false);

    btncancelar.setEnabled(false);

    btneliminar.setEnabled(false); txtidhabitacion.setText("");

    txtprecio_diario.setText(""); txtcaracteristicas.setText("");

    txtdescripcion.setText("");

    }

    //Habilito nuevamente los campos void habilitar() {

    txtidhabitacion.setVisible(false);

    cbopiso.setEnabled(true); txtnumero.setEnabled(true);

    txtdescripcion.setEnabled(true);

    txtcaracteristicas.setEnabled(true); txtprecio_diario.setEnabled(true);

    cboestado.setEnabled(true); cbotipo_habitacion.setEnabled(true);

    btnguardar.setEnabled(true);

    btncancelar.setEnabled(true); btneliminar.setEnabled(true);

    txtidhabitacion.setText(""); txtprecio_diario.setText("");

    txtcaracteristicas.setText(""); txtdescripcion.setText("");

    }

    void mostrar(String buscar) { try {

    DefaultTableModel modelo; fhabitacion func = new fhabitacion();

    modelo = func.mostrar(buscar);

    tablalistado.setModel(modelo); ocultar_columnas();

    lbltotalregistros.setText("Total Registros " + Integer.toString(func.totalregistros));

  • } catch (Exception e) { JOptionPane.showConfirmDialog(rootPane, e);

    }

    }

    10. Me situ en el botn Nuevo y digito el siguiente cdigo

    private void btnnuevoActionPerformed(java.awt.event.ActionEvent evt) {

    //Cuando haga clic sobre el boton de nuevo habilitar();

    btnguardar.setText("Guardar"); accion = "guardar";

    }

    11. Me situ en el botn de Guardar y digito el siguiente cdigo

    private void btnguardarActionPerformed(java.awt.event.ActionEvent

    evt) { // Creo reglas de validacion en cada campo para que todos

    contengan algun tipo de informacion

    if (txtnumero.getText().length() == 0) { JOptionPane.showConfirmDialog(rootPane, "Debes ingresar un

    Nmero de Habitacin"); txtnumero.requestFocus();

    return; }

    if (txtdescripcion.getText().length() == 0) {

    JOptionPane.showConfirmDialog(rootPane, "Debes ingresar una descripcin para la Habitacin Habitacin");

    txtdescripcion.requestFocus(); return;

    }

    if (txtprecio_diario.getText().length() == 0) { JOptionPane.showConfirmDialog(rootPane, "Debes ingresar un

    precio diario para la Habitacin Habitacin"); txtprecio_diario.requestFocus();

  • return;

    }

    if (txtcaracteristicas.getText().length() == 0) {

    JOptionPane.showConfirmDialog(rootPane, "Debes ingresar una caracterstica para la Habitacin Habitacin");

    txtcaracteristicas.requestFocus(); return;

    }

    vhabitacion dts = new vhabitacion(); fhabitacion func = new fhabitacion();

    dts.setNumero(txtnumero.getText());

    int seleccionado = cbopiso.getSelectedIndex();

    dts.setPiso((String) cbopiso.getItemAt(seleccionado));

    dts.setDescripcion(txtdescripcion.getText());

    dts.setCaracteristicas(txtcaracteristicas.getText());

    dts.setPrecio_diario(Double.parseDouble(txtprecio_diario.getText()));

    seleccionado = cboestado.getSelectedIndex();

    dts.setEstado((String) cboestado.getItemAt(seleccionado));

    seleccionado = cbotipo_habitacion.getSelectedIndex(); dts.setTipo_habitacion((String)

    cbotipo_habitacion.getItemAt(seleccionado));

    //Creo una nueva instancia de la clase vhabitacion

    vhabitacion dts = new vhabitacion();

    //instancio la clase para llamar todas la funciones

    fhabitacion func = new fhabitacion();

    //Envio los datos de los controles uno a uno a los metodos setters

    dts.setNumero(txtnumero.getText());

    int seleccionado = cbopiso.getSelectedIndex(); dts.setPiso((String) cbopiso.getItemAt(seleccionado));

  • dts.setDescripcion(txtdescripcion.getText()); dts.setCaracteristicas(txtcaracteristicas.getText());

    dts.setPrecio_diario(Double.parseDouble(txtprecio_diario.getText()));

    seleccionado = cboestado.getSelectedIndex();

    dts.setEstado((String) cboestado.getItemAt(seleccionado));

    seleccionado = cbotipo_habitacion.getSelectedIndex(); dts.setTipo_habitacion((String)

    cbotipo_habitacion.getItemAt(seleccionado));

    //Ahora determino si deseo guardar o editar un registro if (accion.equals("guardar")) {

    if (func.insertar(dts)) { JOptionPane.showMessageDialog(rootPane, "La habitacin

    fue registrada satisfactoriamente");

    mostrar(""); inhabilitar();

    }

    }

    else if (accion.equals("editar")){

    dts.setIdhabitacion(Integer.parseInt(txtidhabitacion.getText()));

    if (func.editar(dts)) {

    JOptionPane.showMessageDialog(rootPane, "La habitacin fue Editada satisfactoriamente");

    mostrar("");

    inhabilitar(); }

    }

    }

  • 12. Me situ en el botn Eliminar y digito el siguiente cdigo

    if (!txtidhabitacion.getText().equals("")) { int confirmacion = JOptionPane.showConfirmDialog(rootPane,

    "Ests seguro de Eliminar la Habitacin?","Confirmar",2);

    if (confirmacion==0) { fhabitacion func = new fhabitacion ();

    vhabitacion dts= new vhabitacion();

    dts.setIdhabitacion(Integer.parseInt(txtidhabitacion.getText()));

    func.eliminar(dts); mostrar("");

    inhabilitar();

    }

    } }

    13. Me situ sobre el botn Buscar y digito el siguiente cdigo

    mostrar(txtbuscar.getText());

    14. Voy a cada control y en cada uno digito el siguiente codigo

    private void txtnumeroActionPerformed(java.awt.event.ActionEvent evt)

    {

    txtnumero.transferFocus();

    }

    private void cbopisoActionPerformed(java.awt.event.ActionEvent evt) {

    cbopiso.transferFocus(); }

  • private void

    txtprecio_diarioActionPerformed(java.awt.event.ActionEvent evt) { txtprecio_diario.transferFocus();

    }

    private void cboestadoActionPerformed(java.awt.event.ActionEvent

    evt) { cboestado.transferFocus();

    }

    private void cbotipo_habitacionActionPerformed(java.awt.event.ActionEvent evt) {

    transferFocus(); }

    15. Ahora establecer que cuando en la tabla de listado de registros seleccione un registro correspondiente, dichos

    valores se pasen a los controles del formulario.

    Para ello selecciono el objeto Tabla > Clic derecho>Events

    >Mouse>MouseClicked

    //Cambio el valor del boton Guardar por el de editar btnguardar.setText("Editar");

    //Todas la cajas de texto disponibles habilitar();

    btneliminar.setEnabled(true); accion="editar";

    int fila = tablalistado.rowAtPoint(evt.getPoint());

    txtidhabitacion.setText(tablalistado.getValueAt(fila, 0).toString());

    txtnumero.setText(tablalistado.getValueAt(fila, 1).toString());

    cbopiso.setSelectedItem(tablalistado.getValueAt(fila,

    2).toString()); txtdescripcion.setText(tablalistado.getValueAt(fila, 3).toString());

    txtcaracteristicas.setText(tablalistado.getValueAt(fila, 4).toString());

    txtprecio_diario.setText(tablalistado.getValueAt(fila, 5).toString());

    cboestado.setSelectedItem(tablalistado.getValueAt(fila, 6).toString());

  • cbotipo_habitacion.setSelectedItem(tablalistado.getValueAt(fila,

    7).toString());

    16. Me situ sobre el botn Salir y digito el siguiente cdigo.

    this.dispose();