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:

