Está en la página 1de 22

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
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 tamao 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


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
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","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
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 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,
fue Editada satisfactoriamente");
mostrar("");
inhabilitar();
}
}
}

"La

habitacin

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
>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 botn Salir y digito el siguiente cdigo.
this.dispose();

También podría gustarte