JAVA+JDBC+swing+IDEA实现学生管理系统

时隔多年,我又有了新的课设任务,还是最原始的基于swing的管理系统(前几天还做了个纯控制台打印的,人给做麻了,忘记放上来了,明天放,至少记录一下废物工作日常)。

先放项目目录,我的代码不正规也不简洁,主打一个冗余但自己能看懂,希望代码警察不要审判我。

环境配置


IDEA里自带了swing插件,新建一个项目,然后new一个GUI窗体就好了,或者自己纯写界面也可以,我瞎写的,我没有审美,我还懒,不乐意用插件。

然后把jdbc的包放进lib文件夹里: 

环境也就配置好了 。

JDBC连接mysql

public DBOper() {
        try {
            // 连接数据库
            String url = "jdbc:mysql://localhost:3306/test";
            String username = "root";
            String password = "123456";
            connection = DriverManager.getConnection(url, username, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

mysql中建表

CREATE TABLE students (
         id INT PRIMARY KEY AUTO_INCREMENT,
         name VARCHAR(100),
         age INT,
         gender VARCHAR(10)
     );

所有代码 

dao层,直接对数据库进行操作,这里我没有封装。

package dao;

import javax.swing.*;
import java.sql.*;

public class DBOper {
    private Connection connection;

    public DBOper() {
        try {
            // 连接数据库
            String url = "jdbc:mysql://localhost:3306/test";
            String username = "root";
            String password = "123456";
            connection = DriverManager.getConnection(url, username, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void addStudent(String name, int age, String gender) {
        String query = "INSERT INTO students (name, age, gender) VALUES (?, ?, ?)";
        try (PreparedStatement statement = connection.prepareStatement(query)) {
                System.out.println("添加成功!"+name+age+gender);
                statement.setString(1, name);
                statement.setInt(2, age);
                statement.setString(3, gender);
                JOptionPane.showMessageDialog(null, "添加成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
                statement.executeUpdate();


        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void updateStudent(int id, String name, int age, String gender) {
        String query = "UPDATE students SET name = ?, age = ? , gender = ? WHERE id = ?";
        try (PreparedStatement statement = connection.prepareStatement(query)) {
            statement.setString(1, name);
            statement.setInt(2, age);
            statement.setString(3, gender);
            statement.setInt(4, id);
            JOptionPane.showMessageDialog(null, "修改成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void deleteStudent(int id) {
        String query = "DELETE FROM students WHERE id = ?";
        try (PreparedStatement statement = connection.prepareStatement(query)) {
            statement.setInt(1, id);
//            int x;
            statement.executeUpdate();
//            x = statement.executeUpdate();
//            System.out.println("xxxxxx"+x);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }




    public Object[][] getAllStudents() {
        Statement stmt = null;
        ResultSet rs = null;
        Object[][] result = null;

        try {
            stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            rs = stmt.executeQuery("SELECT * FROM students");

            // 获取 ResultSet 的行数
            rs.last();
            int rowCount = rs.getRow();

            // 将 ResultSet 指针移到第一行
            rs.beforeFirst();

            // 初始化结果数组
            result = new Object[rowCount][4];

            // 遍历 ResultSet 并填充结果数组
            int i = 0;
            while (rs.next()) {
                result[i][0] = rs.getInt(1); //  ID
                result[i][1] = rs.getString(2); // name
                result[i][2] = rs.getInt(3); // age
                result[i][3] = rs.getString(4); // gender
                i++;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return result;
    }



    public Object[][] searchById(int id) {
        try {
            String query = "SELECT * FROM students WHERE id = ?";
            PreparedStatement statement = connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            statement.setInt(1, id);
            ResultSet resultSet = statement.executeQuery();
            if(resultSet==null){
                JOptionPane.showMessageDialog(null, "当前查
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值