Java初学者创建简单的数据库管理系统,核心是通过JDBC实现Java程序与数据库的交互,同时可以搭配Swing构建图形化操作界面,完成基础的数据增删改查功能。整个项目的难度适中,能覆盖Java基础语法、数据库操作、界面开发等多个核心知识点,非常适合用来检验学习成果。

项目前期准备
首先需要准备好开发环境和相关依赖,具体需要以下内容:
- JDK 8及以上版本,确保Java编译和运行环境正常
- MySQL数据库,用来存储管理的数据
- MySQL JDBC驱动包,用于Java程序连接MySQL数据库
- 开发工具可以选择IntelliJ IDEA或者Eclipse,根据个人使用习惯选择即可
数据库设计
我们先设计一个简单的学生信息表作为管理对象,表结构如下:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键,自增 |
| name | varchar(50) | 学生姓名 |
| age | int | 学生年龄 |
| major | varchar(50) | 学生专业 |
创建表的SQL语句如下:
CREATE DATABASE student_db;
USE student_db;
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
major VARCHAR(50)
);
JDBC连接工具类封装
为了避免重复编写数据库连接代码,我们封装一个JDBC工具类,负责获取连接和释放资源:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCUtil {
// 数据库地址,这里使用本地MySQL,端口3306,数据库名为student_db
private static final String URL = "jdbc:mysql://127.0.0.1:3306/student_db?useSSL=false&serverTimezone=UTC";
private static final String USER = "root";
// 替换为你的MySQL密码
private static final String PASSWORD = "123456";
// 获取数据库连接
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
// 释放资源
public static void close(ResultSet rs, PreparedStatement ps, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
核心CRUD功能实现
接下来实现学生信息的增删改查四个核心功能,每个功能封装为独立的方法:
添加学生信息
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class StudentDao {
// 添加学生
public boolean addStudent(String name, int age, String major) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = JDBCUtil.getConnection();
String sql = "INSERT INTO student(name, age, major) VALUES(?, ?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, age);
ps.setString(3, major);
int rows = ps.executeUpdate();
return rows > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
} finally {
JDBCUtil.close(null, ps, conn);
}
}
}
查询所有学生信息
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class StudentDao {
// 查询所有学生
public List<Student> getAllStudents() {
List<Student> list = new ArrayList<>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JDBCUtil.getConnection();
String sql = "SELECT id, name, age, major FROM student";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
student.setMajor(rs.getString("major"));
list.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil.close(rs, ps, conn);
}
return list;
}
}
// 学生实体类
class Student {
private int id;
private String name;
private int age;
private String major;
// 省略getter和setter方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
}
更新学生信息
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class StudentDao {
// 根据id更新学生信息
public boolean updateStudent(int id, String name, int age, String major) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = JDBCUtil.getConnection();
String sql = "UPDATE student SET name=?, age=?, major=? WHERE id=?";
ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, age);
ps.setString(3, major);
ps.setInt(4, id);
int rows = ps.executeUpdate();
return rows > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
} finally {
JDBCUtil.close(null, ps, conn);
}
}
}
删除学生信息
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class StudentDao {
// 根据id删除学生
public boolean deleteStudent(int id) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = JDBCUtil.getConnection();
String sql = "DELETE FROM student WHERE id=?";
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
int rows = ps.executeUpdate();
return rows > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
} finally {
JDBCUtil.close(null, ps, conn);
}
}
}
简单Swing界面搭建
最后我们可以搭建一个简单的图形界面,让用户通过按钮操作完成数据管理,核心界面代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
public class StudentManagerFrame extends JFrame {
private StudentDao studentDao = new StudentDao();
private JTextArea textArea;
public StudentManagerFrame() {
setTitle("学生信息管理系统");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// 按钮面板
JPanel buttonPanel = new JPanel();
JButton addBtn = new JButton("添加学生");
JButton queryBtn = new JButton("查询所有");
JButton updateBtn = new JButton("更新学生");
JButton deleteBtn = new JButton("删除学生");
buttonPanel.add(addBtn);
buttonPanel.add(queryBtn);
buttonPanel.add(updateBtn);
buttonPanel.add(deleteBtn);
add(buttonPanel, BorderLayout.NORTH);
// 文本显示区域
textArea = new JTextArea();
textArea.setEditable(false);
add(new JScrollPane(textArea), BorderLayout.CENTER);
// 查询按钮事件
queryBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
List<Student> list = studentDao.getAllStudents();
textArea.setText("");
for (Student s : list) {
textArea.append("ID:" + s.getId() + " 姓名:" + s.getName() + " 年龄:" + s.getAge() + " 专业:" + s.getMajor() + "n");
}
}
});
// 添加按钮事件(简化示例,实际可弹窗输入)
addBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
boolean success = studentDao.addStudent("张三", 20, "计算机科学");
if (success) {
JOptionPane.showMessageDialog(null, "添加成功");
} else {
JOptionPane.showMessageDialog(null, "添加失败");
}
}
});
}
public static void main(String[] args) {
// 加载JDBC驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
new StudentManagerFrame().setVisible(true);
}
}
项目运行注意事项
运行项目前需要确保以下几点:
- MySQL服务已经启动,并且student_db数据库和student表已经创建完成
- JDBC驱动包已经导入到项目的依赖中,如果是Maven项目可以在pom.xml中添加对应依赖
- JDBCUtil类中的数据库密码需要替换为你本地MySQL的实际密码
- 如果连接数据库时出现时区错误,可以在URL后添加serverTimezone=UTC参数解决
整个项目完成后,你就拥有了一个具备基础增删改查能力的数据库管理系统,后续还可以扩展更多功能,比如按条件查询、数据校验、界面美化等,逐步提升项目的复杂度。
Java数据库管理系统MySQL_JDBCCRUD操作Java_Swing修改时间:2026-06-24 20:03:54