Tutorial CRUD en Java y MySQL
Que es el acronimo de Create, Read, Update and Delete (Crear, Leer, Actualizar y
Borrar), que se usa para referirse a las transacciones básicas en bases de datos.
Tabla de contenido
Requerimientos
Crear base de datos
Crear proyecto
Diseño de la vista
Conexión a MySQL
o Método para conexión
Métodos CRUD
o Método del botón para guardar
o Método del botón para buscar
o Método del botón para editar
o Método del botón para eliminar
o Método del botón limpiar
Ejecutar proyecto CRUD
Bonus
Requerimientos
JDK 8.0 o superior
MySQL 5.7 o superior
Connector/J 8.0
El proyecto se desarrollo con de IDE Apache Netbeans.
Crear base de datos
Aquí la estructura de la base de datos y tabla.
CREATE DATABASE IF NOT EXISTS `escuela` DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE `escuela`;
CREATE TABLE `persona` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`clave` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,
`nombre` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`domicilio` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,
`telefono` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`correo_electronico` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`fecha_nacimiento` date DEFAULT NULL,
`genero` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Crear proyecto
El proyecto lo hemos desarrollado en el IDE Netbeans actualmente Apache
Netbeans. Creamos un proyecto de tipo Java Application y desmarcamos la
casilla Create Main Class:
Esto creará un proyecto vacío por lo cual agregaremos un paquete dan clic
derecho sobre el nombre del proyecto > New > Java Package y no nombramos
como app.
Dentro de este paquete agregamos un JFrame dando clic derecho sobre el
nombre del paquete > New > JFrame Form y lo nombramos como persona.
La estructura del proyecto se será así:
Diseño de la vista
Para agregar el diseño de nuestro formulario abrimos el
archivo [Link] dando doble clic, agregamos el siguiente diseño:
Descripción de los elementos
Elemento Texto Variable
JLabel Clave
JLabel Nombre
JLabel Domicilio
JLabel Telefono
JLabel Email
JLabel Fecha de nacimiento
JLabel Genero
JTextField txtClave
JTextField txtId
Elemento Texto Variable
JTextField txtNombre
JTextField txtDomicilio
JTextField txtTelefono
JTextField txtEmail
JTextField txtFecha
JComboBox cbxGenero
JButton Buscar btnBuscar
JButton Guarda btnGuarda
JButton Modifica btnModifica
JButton Elimina btnElimina
JButton Limpiar btnLimpiar
Para el elemento JComboBox ve a la propiedades y en Model agrega las
opciones:
Selecciona
Masculino
Femenino
Puedes agregar más opciones. También puede agregar más elementos al
formulario según tus necesidades.
Conexión a MySQL
Para conectar Java con MySQL se necesita un controlador JDBC compatible entre
la versión JDK y MySQL. Descargar Connector/J.
Después de descargar el controlador vamos al proyecto y damos clic derecho en
la carpeta Libraries y seleccionamos Add JAR/Folder, buscamos el
controlador .jar y lo agregamos.
Teniendo el controlador agregado ya podemos conectarnos a la base de datos
de MySQL para esto regresamos al JFrame pero ahora seleccionamos la pestaña
source para ver el código fuente del formulario.
Método para conexión
Dentro del código fuente de la clase [Link] trabajaremos después del
constructor que es el método que se llama igual que la clase.
public static Connection getConection() {
Connection con = null;
String base = "escuela"; //Nombre de la base de datos
String url = "jdbc:mysql://localhost:3306/" + base; //Direccion, puerto y nombre de la Base de
Datos
String user = "root"; //Usuario de Acceso a MySQL
String password = "password"; //Password del usuario
try {
[Link]("[Link]");
con = [Link](url, user, password);
} catch (ClassNotFoundException | SQLException e) {
[Link](e);
return con;
Métodos CRUD
Después de realizar la conexión a MySQL crearemos los métodos para las
transacciones básicas; Registrar, Leer o Buscar, Modificar y Eliminar. Para estos se
necesita implementar eventos de ActionListener la cual se usa para detectar y
manejar eventos de acción, como el clic en los botones.
Podemos activar este eventos de forma automática regresando a la vista diseño y
dando doble clic en los botones o dando clic derecho sobre el botón > Events >
Action > actionPerformed.
Antes de agregar el código a los botón crearemos un método que elimine el
contenido de las cajas de texto (JTextField).
private void limpiarCajas() {
[Link](null);
[Link](null);
[Link](null);
[Link](null);
[Link](null);
[Link](null);
[Link](0);
Método del botón para guardar
private void btnGuardaActionPerformed([Link] evt) {
Connection con;
try {
con = getConection();
ps = [Link]("INSERT INTO persona (clave, nombre, domicilio, telefono,
correo_electronico, fecha_nacimiento, genero) VALUES(?,?,?,?,?,?,?) ");
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
[Link](6, [Link]([Link]()));
[Link](7, [Link]().toString());
int res = [Link]();
if (res > 0) {
[Link](null, "Persona Guardada");
} else {
[Link](null, "Error al Guardar persona");
limpiarCajas();
[Link]();
} catch (HeadlessException | SQLException e) {
[Link](e);
Método del botón para buscar
private void btnBuscarActionPerformed([Link] evt) {
Connection con;
try {
con = getConection();
ps = [Link]("SELECT * FROM persona WHERE clave = ?");
[Link](1, [Link]());
rs = [Link]();
if ([Link]()) {
[Link]([Link]("id"));
[Link]([Link]("nombre"));
[Link]([Link]("domicilio"));
[Link]([Link]("telefono"));
[Link]([Link]("correo_electronico"));
[Link]([Link]("fecha_nacimiento"));
[Link]([Link]("genero"));
} else {
[Link](null, "No existe una persona con la clave");
limpiarCajas();
} catch (HeadlessException | SQLException e) {
[Link](e);
Método del botón para editar
private void btnModificaActionPerformed([Link] evt) {
Connection con;
try {
con = getConection();
ps = [Link]("UPDATE persona SET clave=?, nombre=?, domicilio=?,
telefono=?, correo_electronico=?, fecha_nacimiento=?, genero=? WHERE id=?");
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
[Link](6, [Link]([Link]()));
[Link](7, [Link]().toString());
[Link](8, [Link]());
int res = [Link]();
if (res > 0) {
[Link](null, "Persona Modificada");
} else {
[Link](null, "Error al Modificar persona");
limpiarCajas();
[Link]();
} catch (HeadlessException | SQLException e) {
[Link](e);
Método del botón para eliminar
private void btnEliminaActionPerformed([Link] evt) {
Connection con;
try {
con = getConection();
ps = [Link]("DELETE FROM persona WHERE id=?");
[Link](1, [Link]([Link]()));
int res = [Link]();
if (res > 0) {
[Link](null, "Persona Eliminada");
} else {
[Link](null, "Error al eliminar persona");
limpiarCajas();
[Link]();
} catch (HeadlessException | NumberFormatException | SQLException e) {
[Link](e);
Método del botón limpiar
private void btnLimpiarActionPerformed([Link] evt) {
limpiarCajas();
Como instrucción adicional podemos hacer que el campo de texto para guardar
temporalmente el ID del registro no sea visible. Para esto agregamos la
propiedad setVisible(false) a la variable txtId, esto será en el método
constructor después de iniciar los componentes.
public persona() {
initComponents();
[Link](false);
Ejecutar proyecto CRUD
Para ejecutar el proyecto damos clic derecho dentro de la clase y seleccionar Run
File para ejecutar el proyecto.
Resultado
Puedes crear tu propio diseño, quitar o agregar campos al formulario y adaptarlo
a tus necesidades.