POO Insertar Datos en Base de Datos desde Formulario Java

- Base de Datos. Creamos una base de datos ejemplo para poder utilizarla.

- Servidor Local. Activamos el servidor local que utiliza el puerto 3306.
- Crear Proyecto Nuevo en Netbeans. Crearemos un nuevo proyecto y le ponemos nombre ejemplo y agregamos los componentes.
- Luego Creamos la Clase Conexion para conectarse con la base de datos.
package ejemplo;
import java.util.Objects;
public class Epersona {
private String Dni;
private String Apellidos;
private String Nombres;
private int Edad;
public Epersona(String Dni, String Apellidos, String Nombres, int Edad) {
this.Dni = Dni;
this.Apellidos = Apellidos;
this.Nombres = Nombres;
this.Edad = Edad;
}
public String getDni() {
return Dni;
}
public void setDni(String Dni) {
this.Dni = Dni;
}
public String getApellidos() {
return Apellidos;
}
public void setApellidos(String Apellidos) {
this.Apellidos = Apellidos;
}
public String getNombres() {
return Nombres;
}
public void setNombres(String Nombres) {
this.Nombres = Nombres;
}
public int getEdad() {
return Edad;
}
public void setEdad(int Edad) {
this.Edad = Edad;
}
@Override
public String toString() {
return this.Apellidos+" "+this.Nombres;
}
@Override
public int hashCode() {
int hash = 5;
hash = 53 * hash + Objects.hashCode(this.Dni);
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Epersona other = (Epersona) obj;
if (!Objects.equals(this.Dni, other.Dni)) {
return false;
}
return true;
}
}
- Luego agregamos el conector com.mysql.jdbc.Driver.jar a nuestro proyecto a librerías.
- Luego necesitamos operar los datos con la base de datos para ello crearemos la Clase EpersonaDAO.java, haciendo referencia a El acrónimo DAO: Data Access Object, un componente de software que facilita el acceso a datos almacenados.
package ejemplo;
import java.sql.*;
import java.util.*;
public class EpersonaDAO {
private Connection cnn = null;
private ResultSet rs=null;
private static EpersonaDAO instancia;
public static EpersonaDAO getInstancia()
{
if(instancia==null)
instancia=new EpersonaDAO();
return instancia;
}
public void insertar(String Dni, String Apellidos, String Nombres, int Edad) throws SQLException {
cnn = Conexion.getInstancia().miConexion();
PreparedStatement ps=null;
try {
ps = cnn.prepareStatement("INSERT INTO persona " +
"(Dni" +
",Apellidos" +
",Nombres" +
",Edad)" +
"VALUES (?,?,?,?)");
ps.setString(1, Dni);
ps.setString(2, Apellidos);
ps.setString(3, Nombres);
ps.setInt(4, Edad);
ps.executeUpdate();
} catch (SQLException ex) {
System.out.println("ERROR: " + ex.getMessage());
} finally {
cnn.close();
ps.close();
}
}
public Epersona buscarEpersona(String Dni) throws SQLException {
cnn = Conexion.getInstancia().miConexion();
PreparedStatement ps=null;
Epersona eper=null;
try {
ps = cnn.prepareStatement("SELECT * FROM persona " +
"WHERE Dni=?");
ps.setString(1, Dni);
rs = ps.executeQuery();
if (rs.next()) {
String Apellidos=rs.getString("Apellidos");
String Nombres=rs.getString("Nombres");
int Edad=rs.getInt("Edad");
eper= new Epersona(Dni,Apellidos,Nombres,Edad);
}
} catch (SQLException ex) {
System.out.println("ERROR: " + ex.getMessage());
} finally {
cnn.close();
ps.close();
}
return eper;
}
public void actualizar(String Dni, String Apellidos, String Nombres, int Edad) throws SQLException {
cnn = Conexion.getInstancia().miConexion();
PreparedStatement ps=null;
try {
ps = cnn.prepareStatement("UPDATE persona " +
"SET Apellidos = ?," +
"Nombres = ?," +
"Edad = ? " +
"WHERE Dni=?");
ps.setString(4, Dni);
ps.setString(1, Apellidos);
ps.setString(2, Nombres);
ps.setInt(3, Edad);
ps.executeUpdate();
} catch (SQLException ex) {
System.out.println("ERROR: " + ex.getMessage());
} finally {
cnn.close();
ps.close();
}
}
public void eliminar(String Dni) throws SQLException {
cnn = Conexion.getInstancia().miConexion();
PreparedStatement ps=null;
try {
ps = cnn.prepareStatement("DELETE FROM persona " +
"WHERE Dni=?");
ps.setString(1, Dni);
ps.executeUpdate();
} catch (SQLException ex) {
System.out.println("ERROR: " + ex.getMessage());
} finally {
cnn.close();
ps.close();
}
}
public ArrayList<Epersona> mostrarEpersonas() throws SQLException {
cnn = Conexion.getInstancia().miConexion();
PreparedStatement ps=null;
ArrayList<Epersona> lista = new ArrayList<Epersona>();
try {
ps=cnn.prepareStatement("SELECT * FROM persona");
rs=ps.executeQuery();
while (rs.next()) {
String Dni=rs.getString("Dni");
String Apellidos=rs.getString("Apellidos");
String Nombres=rs.getString("Nombres");
int Edad = rs.getInt("Edad");
Epersona eper= new Epersona(Dni,Apellidos,Nombres,Edad);
lista.add(eper);
}
} catch (SQLException ex) {
System.out.println("ERROR: " + ex.getMessage());
} finally {
cnn.close();
ps.close();
}
return lista;
}
public ArrayList<Epersona> buscarPorApellidos(String ape) throws SQLException {
cnn = Conexion.getInstancia().miConexion();
PreparedStatement ps=null;
ArrayList<Epersona> lista = new ArrayList<Epersona>();
try {
ps=cnn.prepareStatement("SELECT * FROM persona where Apellidos like ?");
ps.setString(1, ape+"%");
rs=ps.executeQuery();
while (rs.next()) {
String Dni=rs.getString("Dni");
String Apellidos=rs.getString("Apellidos");
String Nombres=rs.getString("Nombres");
int Edad = rs.getInt("Edad");
Epersona eper= new Epersona(Dni,Apellidos,Nombres, Edad);
lista.add(eper);
}
} catch (SQLException ex) {
System.out.println("ERROR: " + ex.getMessage());
} finally {
cnn.close();
ps.close();
}
return lista;
}
}
- Luego vamos al formulario Vista a codificar.
Formulario Vista.
Entramos en la opción Design y agregamos librerías para usar las excepciones por si se produzca un error, para usar la tabla , para usar un lista de datos y los mensajes de diálogo , además agregamos unos métodos para mostrar los datos, para limpiar las cajas de texto para activar y desactivar los botones.
package ejemplo;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class Vista extends javax.swing.JFrame {
DefaultTableModel modelo = new DefaultTableModel();
String nombreColumnas[]={"Dni","Apellidos","Nombres","Edad"};
boolean reg;
int pmod;
public Vista() {
initComponents();
this.setLocationRelativeTo(null);
setLocation(300,150);
controles(true);
textos(false);
tabla();
}
public void tabla(){
modelo.setColumnIdentifiers(nombreColumnas);
try {
ArrayList<Epersona> lista = EpersonaDAO.getInstancia().mostrarEpersonas();
Object [][]datos=new Object[lista.size()][5];
for (int i = 0; i < lista.size(); i++) {
Epersona x = lista.get(i);
datos[i][0]=x.getDni();
datos[i][1]=x.getApellidos();
datos[i][2]=x.getNombres();
datos[i][3]=x.getEdad();
}
modelo.setDataVector(datos, nombreColumnas);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
void limpiarTextos()
{
txtDni.setText("");
txtApellidos.setText("");
txtNombres.setText("");
txtEdad.setText("");
}
void controles(boolean sw)
{
btnNuevo.setEnabled(sw);
btnRegistrar.setEnabled(!sw);
btnCancelar.setEnabled(!sw);
btnEliminar.setEnabled(sw);
btnModificar.setEnabled(sw);
}
void textos(boolean sw)
{
txtDni.setEditable(sw);
txtApellidos.setEditable(sw);
txtNombres.setEditable(sw);
txtEdad.setEditable(sw);
}
Botón Nuevo.
Este botón no habilita los cuadros de texto y el botón de Registrar.
private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {
reg=true;
textos(true);
limpiarTextos();
controles(false);
txtDni.requestFocus();
}
Botón Registrar.
Este botón recibe los datos de los cuadros de texto y son analizados que no esten vacios, además recibe un valor la variable reg que ha sido inicializada en el botón Nuevo lo cual es usado en una Condicional para que envíe los datos para que se Registre o Modifique.
private void btnRegistrarActionPerformed(java.awt.event.ActionEvent evt) {
String Dni,Apellidos,Nombres;
int Edad;
if(txtDni.getText().compareTo("")!=0 && txtApellidos.getText().compareTo("")!=0
&& txtNombres.getText().compareTo("")!=0 && txtEdad.getText().compareTo("")!=0) {
Dni = txtDni.getText();
Apellidos = txtApellidos.getText();
Nombres = txtNombres.getText();
Edad = Integer.parseInt(txtEdad.getText());
if(reg) {
try {
EpersonaDAO.getInstancia().insertar(Dni, Apellidos, Nombres, Edad);
JOptionPane.showMessageDialog(null,"Dato registrado");
tabla();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,ex.getMessage());
}
} else {
try {
EpersonaDAO.getInstancia().actualizar(Dni, Apellidos, Nombres, Edad);
JOptionPane.showMessageDialog(null,"Dato modificado");
tabla();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,ex.getMessage());
}
}
limpiarTextos();
textos(false);
controles(true);
} else
JOptionPane.showMessageDialog(null,"faltan llenar datos");
}
Botón Modificar.
Este botón abre un Mensaje de Diálogo con caja de texto donde ingresamos el dato a modificar además asigna un valor falso a la variable reg para que cuando se da clic en el botón Registrar la condicional lo analize y sea modificado y no registrado.
private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {
String Dni;
limpiarTextos();
Dni=JOptionPane.showInputDialog("Dni de Persona a Modificar : ");
Epersona x;
try {
x = EpersonaDAO.getInstancia().buscarEpersona(Dni);
if(x!=null) {
txtDni.setText(x.getDni());
txtApellidos.setText(x.getApellidos());
txtNombres.setText(x.getNombres());
txtEdad.setText(String.valueOf(x.getEdad()));
reg=false;
textos(true);
txtDni.setEditable(false);
controles(false);
} else
JOptionPane.showMessageDialog(null,"El Dni de la Persona no existe");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,ex.getMessage());
}
}
Botón Eliminar.
Este botón abre un Mensaje de Diálogo con caja de texto donde ingresamos el dato a eliminar lo cual será verificado si existe el dato para elimarlo.
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {
String Dni;
limpiarTextos();
Dni=JOptionPane.showInputDialog("Codigo del la Epersona a eliminar : ");
Epersona x;
try {
x = EpersonaDAO.getInstancia().buscarEpersona(Dni);
if(x!=null) {
txtDni.setText(x.getDni());
txtApellidos.setText(x.getApellidos());
txtNombres.setText(x.getNombres());
txtEdad.setText(String.valueOf(x.getEdad()));
int resp= JOptionPane.showConfirmDialog(this,"Estas seguro de Eliminarlo?","Eliminar Dato",JOptionPane.YES_NO_OPTION );
if( resp == JOptionPane.YES_OPTION ) {
EpersonaDAO.getInstancia().eliminar(Dni);
JOptionPane.showMessageDialog(this,"Registro eliminado");
tabla();
limpiarTextos();
}
} else{
JOptionPane.showMessageDialog(null,"El Codigo del Epersona no existe");
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,ex.getMessage());
}
}
Botón Cancelar.
Este botón lo que hace es cancelar las operaciones que estamos realizando limpia las cajas de texto los botones lo inicializa nuestra los datos en la tabla.
private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
limpiarTextos();
textos(false);
controles(true);
txtBuscar.setText("");
tabla();
}
Caja de texto Buscar Apellido.
Esta caja de texto nos busca los datos de la persona por apellidos mientras escribimos sin pulsar ningun boton,
primeramente recibe los datos de las caja de texto lo buscar y lo resultados lo almacena en un ArrayList lo cual es asignado a la tabla modelo que los mostrará en el formulario.
private void txtBuscarKeyReleased(java.awt.event.KeyEvent evt) {
String buscar=txtBuscar.getText();
modelo.setColumnIdentifiers(nombreColumnas);
try {
ArrayList<Epersona> lista = EpersonaDAO.getInstancia().buscarPorApellidos(buscar);
Object [][]datos=new Object[lista.size()][5];
for (int i = 0; i < lista.size(); i++) {
Epersona x = lista.get(i);
datos[i][0]=x.getDni();
datos[i][1]=x.getApellidos();
datos[i][2]=x.getNombres();
datos[i][3]=x.getEdad();
}
modelo.setDataVector(datos, nombreColumnas);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
Botón Mostrar Todo.
Este Botón nos muestra todos lo datos después de realizar la busqueda busqueda.
private void TodoActionPerformed(java.awt.event.ActionEvent evt) {
tabla();
txtBuscar.setText("");
}
Botón Salir.
algo simple como esto que cierra el programa.
private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
- Ejecutar Programa
Ahora instanciamos el formulario que tiene de nombre Vista en la clase ejemplo.java que se creo automáticamente cuando creamos el proyecto ejemplo.
package ejemplo;
/**
*
* @author eli
*/
public class Ejemplo {
public static void main(String[] args) {
Vista v = new Vista();
v.setVisible(true);
}
}



Comentarios
Publicar un comentario