Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Làm đồ án Java chức năng CRUD có kết nối MySQL đơn giản
Hướng Dẫn Đồ Án

Làm đồ án Java chức năng CRUD có kết nối MySQL đơn giản

Chia sẻ
Chia sẻ

Trong quá trình học lập trình Java tại các trường đại học, một trong những yêu cầu phổ biến trong đồ án là xây dựng ứng dụng CRUD (Create, Read, Update, Delete) kết hợp với cơ sở dữ liệu. Bài viết này sẽ hướng dẫn bạn thực hiện một ứng dụng Java Desktop đơn giản sử dụng Java Swing để thao tác dữ liệu sinh viên kết nối với MySQL bằng JDBC.

Với giao diện đồ họa trực quan, tính năng đầy đủ, và mã nguồn rõ ràng, bạn có thể dễ dàng trình bày bài làm của mình một cách chuyên nghiệp.

Chuẩn bị cơ sở dữ liệu MySQL cho ứng dụng

Trước tiên, bạn cần tạo cơ sở dữ liệu và bảng dữ liệu để phục vụ cho chức năng CRUD. Ở đây, ta xây dựng bảng students để lưu thông tin sinh viên.

Tạo database và bảng bằng lệnh SQL sau:

CREATE DATABASE studentdb;

USE studentdb;

CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(100),
    phone VARCHAR(20)
);

Lưu ý:

  • Cần cài đặt MySQL Server và tạo user có quyền truy cập.

  • Mặc định thường dùng tài khoản root, mật khẩu rỗng hoặc do bạn đặt.

Thiết lập kết nối Java với MySQL bằng JDBC

Để Java có thể kết nối với MySQL, bạn cần import file driver mysql-connector-java-x.x.x.jar vào thư mục thư viện của project (NetBeans hoặc IntelliJ đều hỗ trợ).

Tạo class kết nối MySQL như sau:

File: DBConnect.java

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

public class DBConnect {
    public static Connection getConnection() {
        Connection conn = null;
        try {
            String url = "jdbc:mysql://localhost:3306/studentdb";
            String user = "root";
            String password = ""; // thay bằng mật khẩu của bạn
            conn = DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            System.out.println("Kết nối thất bại: " + e.getMessage());
        }
        return conn;
    }
}

Tips chuẩn SEO: nên dùng cấu trúc rõ ràng, giải thích chức năng của từng phần, và dùng từ khóa như “kết nối MySQL bằng JDBC”, “lỗi kết nối MySQL trong Java”.

Tạo giao diện đơn giản với Java Swing

Giao diện là nơi người dùng nhập và thao tác dữ liệu. Bạn có thể tạo bằng kéo thả trong NetBeans hoặc viết tay như dưới đây.

Giao diện cơ bản gồm:

  • Ô nhập: tên, email, số điện thoại

  • Nút: Thêm, Sửa, Xóa, Làm mới

  • Bảng JTable để hiển thị danh sách sinh viên

Từ khóa ảnh: [java swing form crud]

Ví dụ tạo form bằng Java Swing:

File: StudentForm.java

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.sql.*;
import java.util.Vector;

public class StudentForm extends JFrame {
    JTextField txtName = new JTextField(20);
    JTextField txtEmail = new JTextField(20);
    JTextField txtPhone = new JTextField(20);
    JTable table;
    DefaultTableModel model;

    public StudentForm() {
        setTitle("Quản lý Sinh viên");
        setSize(600, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        JPanel inputPanel = new JPanel(new GridLayout(4, 2));
        inputPanel.add(new JLabel("Tên:")); inputPanel.add(txtName);
        inputPanel.add(new JLabel("Email:")); inputPanel.add(txtEmail);
        inputPanel.add(new JLabel("Điện thoại:")); inputPanel.add(txtPhone);

        JButton btnAdd = new JButton("Thêm");
        JButton btnUpdate = new JButton("Sửa");
        JButton btnDelete = new JButton("Xóa");
        JButton btnClear = new JButton("Làm mới");

        JPanel buttonPanel = new JPanel();
        buttonPanel.add(btnAdd); buttonPanel.add(btnUpdate);
        buttonPanel.add(btnDelete); buttonPanel.add(btnClear);

        model = new DefaultTableModel();
        model.setColumnIdentifiers(new Object[]{"ID", "Tên", "Email", "Phone"});
        table = new JTable(model);

        JScrollPane scrollPane = new JScrollPane(table);

        add(inputPanel, BorderLayout.NORTH);
        add(buttonPanel, BorderLayout.CENTER);
        add(scrollPane, BorderLayout.SOUTH);

        loadData();

        // Thêm sự kiện xử lý nút ở đây...
    }

    public void loadData() {
        model.setRowCount(0);
        try (Connection conn = DBConnect.getConnection()) {
            String query = "SELECT * FROM students";
            PreparedStatement stmt = conn.prepareStatement(query);
            ResultSet rs = stmt.executeQuery();
            while (rs.next()) {
                Vector<Object> row = new Vector<>();
                row.add(rs.getInt("id"));
                row.add(rs.getString("name"));
                row.add(rs.getString("email"));
                row.add(rs.getString("phone"));
                model.addRow(row);
            }
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Lỗi tải dữ liệu!");
        }
    }

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

Xử lý chức năng thêm, sửa, xóa dữ liệu

Trong phần giao diện, sau khi đã khai báo các nút btnAdd, btnUpdate, btnDelete, bạn sẽ gắn sự kiện như sau:

Thêm mới:

btnAdd.addActionListener(e -> {
    try (Connection conn = DBConnect.getConnection()) {
        String sql = "INSERT INTO students (name, email, phone) VALUES (?, ?, ?)";
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setString(1, txtName.getText());
        stmt.setString(2, txtEmail.getText());
        stmt.setString(3, txtPhone.getText());
        stmt.executeUpdate();
        JOptionPane.showMessageDialog(this, "Thêm thành công!");
        loadData();
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
});

Sửa thông tin:

btnUpdate.addActionListener(e -> {
    int row = table.getSelectedRow();
    if (row >= 0) {
        int id = (int) model.getValueAt(row, 0);
        try (Connection conn = DBConnect.getConnection()) {
            String sql = "UPDATE students SET name=?, email=?, phone=? WHERE id=?";
            PreparedStatement stmt = conn.prepareStatement(sql);
            stmt.setString(1, txtName.getText());
            stmt.setString(2, txtEmail.getText());
            stmt.setString(3, txtPhone.getText());
            stmt.setInt(4, id);
            stmt.executeUpdate();
            JOptionPane.showMessageDialog(this, "Cập nhật thành công!");
            loadData();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
});

Xóa dòng dữ liệu:

btnDelete.addActionListener(e -> {
    int row = table.getSelectedRow();
    if (row >= 0) {
        int id = (int) model.getValueAt(row, 0);
        int confirm = JOptionPane.showConfirmDialog(this, "Xóa sinh viên này?", "Xác nhận", JOptionPane.YES_NO_OPTION);
        if (confirm == JOptionPane.YES_OPTION) {
            try (Connection conn = DBConnect.getConnection()) {
                String sql = "DELETE FROM students WHERE id=?";
                PreparedStatement stmt = conn.prepareStatement(sql);
                stmt.setInt(1, id);
                stmt.executeUpdate();
                JOptionPane.showMessageDialog(this, "Xóa thành công!");
                loadData();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
});

Tổng kết và hướng phát triển

Bạn vừa hoàn thành một đồ án Java đơn giản với đầy đủ chức năng CRUD kết nối MySQL. Ứng dụng có thể mở rộng thêm các tính năng như tìm kiếm, phân trang, lọc dữ liệu, phân quyền người dùng, hoặc chuyển sang JavaFX để có giao diện đẹp hơn.

Dự án này rất phù hợp để nộp đồ án môn học, bài thực hành hoặc đăng GitHub làm portfolio. Nếu bạn nắm vững kiến thức về JDBC, Swing và mô hình CRUD, bạn hoàn toàn có thể tự xây dựng ứng dụng lớn hơn như quản lý thư viện, bán hàng, nhà trọ hoặc trường học.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!