Ejercicios java y MySQL

EJEMPLO DE CONEXION ENTRE JAVA Y MYSQL REQUERIMIENTOS    JSDK de Java Netbeans Servidor WEB (Wampserver) 1. A travé

Views 187 Downloads 53 File size 378KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

EJEMPLO DE CONEXION ENTRE JAVA Y MYSQL REQUERIMIENTOS   

JSDK de Java Netbeans Servidor WEB (Wampserver)

1. A través 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. Descripción del entorno de trabajo en Netbeans: 

Logica:



Datos



Presentación

4. Crear un nuevo proyecto, lo vamos a llamar SistemaReservasHoteleras, omitiremos la creación 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 import import import

java.sql.Connection; java.sql.DriverManager; java.sql.SQLException; 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 JFrameForm>Class Name: frmhabitacion > Finish Ampliamos el tamaño del formulario.

>

New

>

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 información de la habitación.  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 método constructor como parámetros 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 Lógica vamos a crear la clase > fhabitacion

8. Vamos a crear la siguiente codificación en dicha clase package Logica; import import import import import import import

Datos.vhabitacion; java.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.Statement; javax.swing.JOptionPane; 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","Número","Piso","Descripción","Caracteristicas","Precio","Estado"," Tipo habitación"}; //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 estática 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 Presentación. y creamos el siguiente código alli. package Presentacion; import import import import

Datos.vhabitacion; Logica.fhabitacion; javax.swing.JOptionPane; 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 botón Nuevo y digito el siguiente código 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 botón de Guardar y digito el siguiente código 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 Número de Habitación"); txtnumero.requestFocus(); return; } if (txtdescripcion.getText().length() == 0) { JOptionPane.showConfirmDialog(rootPane, "Debes ingresar una descripción para la Habitación Habitación"); txtdescripcion.requestFocus(); return; } if (txtprecio_diario.getText().length() == 0) { JOptionPane.showConfirmDialog(rootPane, "Debes ingresar un precio diario para la Habitación Habitación"); txtprecio_diario.requestFocus();

return; } if (txtcaracteristicas.getText().length() == 0) { JOptionPane.showConfirmDialog(rootPane, "Debes ingresar una característica para la Habitación Habitación"); 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 habitación fue registrada satisfactoriamente"); mostrar(""); inhabilitar(); } } else if (accion.equals("editar")){ dts.setIdhabitacion(Integer.parseInt(txtidhabitacion.getText())); if (func.editar(dts)) { JOptionPane.showMessageDialog(rootPane, fue Editada satisfactoriamente"); mostrar(""); inhabilitar(); } } }

"La

habitación

12. Me situó en el botón Eliminar y digito el siguiente código if (!txtidhabitacion.getText().equals("")) { int confirmacion = JOptionPane.showConfirmDialog(rootPane, "Estás seguro de Eliminar la Habitación?","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 botón Buscar y digito el siguiente código

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 >Mouse>MouseClicked

el

objeto

Tabla

>

Clic

derecho>Events

//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 botón Salir y digito el siguiente código. this.dispose();