ejercicios java y mysql
Post on 04-Mar-2016
347 Views
Preview:
DESCRIPTION
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();
top related