Java初学者如何创建简单的数据库管理系统

来源:建站技术作者:上海GEO公司头衔:草根站长
导读:本期聚焦于小伙伴创作的《Java初学者如何创建简单的数据库管理系统》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Java初学者如何创建简单的数据库管理系统》有用,将其分享出去将是对创作者最好的鼓励。

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

Java初学者如何创建简单的数据库管理系统

项目前期准备

首先需要准备好开发环境和相关依赖,具体需要以下内容:

  • JDK 8及以上版本,确保Java编译和运行环境正常
  • MySQL数据库,用来存储管理的数据
  • MySQL JDBC驱动包,用于Java程序连接MySQL数据库
  • 开发工具可以选择IntelliJ IDEA或者Eclipse,根据个人使用习惯选择即可

数据库设计

我们先设计一个简单的学生信息表作为管理对象,表结构如下:

字段名类型说明
idint主键,自增
namevarchar(50)学生姓名
ageint学生年龄
majorvarchar(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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。