COMPARTE ESTE ARTÍCULO

En este artículo, exploraremos cómo crear una tabla llamada “Trabajador” en MySQL y desarrollar un CRUD (Crear, Leer, Actualizar, Eliminar) en Java Swing utilizando JDBC. Este proyecto es ideal para aprender a conectar aplicaciones Java con bases de datos y gestionar información de manera eficiente.


1. Creación de la Tabla “Trabajador” en MySQL

Script SQL para la Tabla

La tabla “Trabajador” tendrá varios campos básicos como id, nombre, apellido, email, salario, y fecha_contratacion.

CREATE DATABASE IF NOT EXISTS Empresa;

USE Empresa;

CREATE TABLE IF NOT EXISTS Trabajador (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL,
    apellido VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    salario DECIMAL(10, 2) NOT NULL,
    fecha_contratacion DATE NOT NULL
);

Insertar Datos de Prueba

Podemos agregar algunos registros iniciales para probar la funcionalidad del CRUD.

INSERT INTO Trabajador (nombre, apellido, email, salario, fecha_contratacion) VALUES
('Juan', 'Pérez', 'juan.perez@example.com', 2500.50, '2021-06-15'),
('Ana', 'García', 'ana.garcia@example.com', 3000.00, '2022-01-10'),
('Luis', 'Martínez', 'luis.martinez@example.com', 2800.00, '2023-03-20');

2. Configuración del Proyecto en Java

Dependencias y Conexión JDBC

Agrega el archivo .jar del conector MySQL (como mysql-connector-java-x.x.x.jar) a tu proyecto Java.

Clase para la Conexión a la Base de Datos

Crea una clase que administre la conexión a la base de datos.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexion {
    private static final String URL = "jdbc:mysql://localhost:3306/Empresa";
    private static final String USER = "root";
    private static final String PASSWORD = "tu_contraseña";

    public static Connection conectar() {
        try {
            return DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("Error al conectar con la base de datos.");
        }
    }
}

3. Desarrollo del CRUD en Java Swing

Diseño de la Interfaz Gráfica

Crea una ventana con un formulario para capturar datos y una tabla para mostrar la lista de trabajadores.

Código del CRUD

Aquí tienes el código completo para manejar las operaciones del CRUD.

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

public class CRUDTrabajador extends JFrame {
    private JTextField txtNombre, txtApellido, txtEmail, txtSalario, txtFecha;
    private JTable tabla;
    private DefaultTableModel modelo;

    public CRUDTrabajador() {
        setTitle("CRUD Trabajador");
        setSize(800, 600);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        // Panel de formulario
        JPanel formulario = new JPanel(new GridLayout(6, 2));
        formulario.add(new JLabel("Nombre:"));
        txtNombre = new JTextField();
        formulario.add(txtNombre);

        formulario.add(new JLabel("Apellido:"));
        txtApellido = new JTextField();
        formulario.add(txtApellido);

        formulario.add(new JLabel("Email:"));
        txtEmail = new JTextField();
        formulario.add(txtEmail);

        formulario.add(new JLabel("Salario:"));
        txtSalario = new JTextField();
        formulario.add(txtSalario);

        formulario.add(new JLabel("Fecha Contratación (YYYY-MM-DD):"));
        txtFecha = new JTextField();
        formulario.add(txtFecha);

        JButton btnGuardar = new JButton("Guardar");
        formulario.add(btnGuardar);

        JButton btnActualizar = new JButton("Actualizar");
        formulario.add(btnActualizar);

        JButton btnEliminar = new JButton("Eliminar");
        formulario.add(btnEliminar);

        JButton btnLimpiar = new JButton("Limpiar");
        formulario.add(btnLimpiar);

        add(formulario, BorderLayout.NORTH);

        // Tabla
        modelo = new DefaultTableModel(new String[]{"ID", "Nombre", "Apellido", "Email", "Salario", "Fecha"}, 0);
        tabla = new JTable(modelo);
        JScrollPane scrollPane = new JScrollPane(tabla);
        add(scrollPane, BorderLayout.CENTER);

        cargarDatos();

        // Eventos de los botones
        btnGuardar.addActionListener(e -> guardarTrabajador());
        btnActualizar.addActionListener(e -> actualizarTrabajador());
        btnEliminar.addActionListener(e -> eliminarTrabajador());
        btnLimpiar.addActionListener(e -> limpiarFormulario());
    }

    private void cargarDatos() {
        modelo.setRowCount(0);
        try (Connection con = Conexion.conectar();
             Statement stmt = con.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM Trabajador")) {

            while (rs.next()) {
                modelo.addRow(new Object[]{
                        rs.getInt("id"),
                        rs.getString("nombre"),
                        rs.getString("apellido"),
                        rs.getString("email"),
                        rs.getDouble("salario"),
                        rs.getDate("fecha_contratacion")
                });
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void guardarTrabajador() {
        String nombre = txtNombre.getText();
        String apellido = txtApellido.getText();
        String email = txtEmail.getText();
        double salario = Double.parseDouble(txtSalario.getText());
        String fecha = txtFecha.getText();

        String sql = "INSERT INTO Trabajador (nombre, apellido, email, salario, fecha_contratacion) VALUES (?, ?, ?, ?, ?)";
        try (Connection con = Conexion.conectar();
             PreparedStatement stmt = con.prepareStatement(sql)) {

            stmt.setString(1, nombre);
            stmt.setString(2, apellido);
            stmt.setString(3, email);
            stmt.setDouble(4, salario);
            stmt.setDate(5, Date.valueOf(fecha));
            stmt.executeUpdate();
            cargarDatos();
            limpiarFormulario();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void actualizarTrabajador() {
        int fila = tabla.getSelectedRow();
        if (fila == -1) {
            JOptionPane.showMessageDialog(this, "Seleccione un trabajador para actualizar.");
            return;
        }

        int id = (int) modelo.getValueAt(fila, 0);
        String nombre = txtNombre.getText();
        String apellido = txtApellido.getText();
        String email = txtEmail.getText();
        double salario = Double.parseDouble(txtSalario.getText());
        String fecha = txtFecha.getText();

        String sql = "UPDATE Trabajador SET nombre=?, apellido=?, email=?, salario=?, fecha_contratacion=? WHERE id=?";
        try (Connection con = Conexion.conectar();
             PreparedStatement stmt = con.prepareStatement(sql)) {

            stmt.setString(1, nombre);
            stmt.setString(2, apellido);
            stmt.setString(3, email);
            stmt.setDouble(4, salario);
            stmt.setDate(5, Date.valueOf(fecha));
            stmt.setInt(6, id);
            stmt.executeUpdate();
            cargarDatos();
            limpiarFormulario();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void eliminarTrabajador() {
        int fila = tabla.getSelectedRow();
        if (fila == -1) {
            JOptionPane.showMessageDialog(this, "Seleccione un trabajador para eliminar.");
            return;
        }

        int id = (int) modelo.getValueAt(fila, 0);
        String sql = "DELETE FROM Trabajador WHERE id=?";
        try (Connection con = Conexion.conectar();
             PreparedStatement stmt = con.prepareStatement(sql)) {

            stmt.setInt(1, id);
            stmt.executeUpdate();
            cargarDatos();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void limpiarFormulario() {
        txtNombre.setText("");
        txtApellido.setText("");
        txtEmail.setText("");
        txtSalario.setText("");
        txtFecha.setText("");
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new CRUDTrabajador().setVisible(true));
    }
}

Conclusión

Con este ejemplo, aprendiste a:

  • Crear una tabla en MySQL.
  • Configurar la conexión entre Java y MySQL utilizando JDBC.
  • Desarrollar un CRUD completo con Java Swing.

Este proyecto puede ampliarse para incluir validaciones, estilos avanzados o integrarse con frameworks modernos como Spring Boot para una arquitectura más robusta. ¡Manos a la obra!


¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.


¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos. 

 

 


NUESTRAS ÚLTIMAS PUBLICACIONES

AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Categories:

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
error: CONTENIDO PROTEGIDO