IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Java学生信息管理系统(Swing+JDBC<MySQL>) -> 正文阅读

[大数据]Java学生信息管理系统(Swing+JDBC<MySQL>)

本文有借鉴别人的代码,但是也是自己理解之后写出来的,文中有注释,并且有个别文件也用红框和黄字体讲解,并且能解决其他文件90%看不懂的问题,如果还是看不懂清留言,源码在文章末尾,附上了全部代码,这个注册系统比较简陋,供大家学习参考。

# 一、系统简介(思维导图) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2b556c1b34c3452590b3df5fbd02eb7b.png#pic_center)

**这是一个简单的思维导图大家将就着看**不知道思维导图能不能显示出来,可能有点问题,但是复制链接能访问,如果有需要我会补上

二、JDBC模块

1、声明所需

    public static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";//版本低的可以删除中间得cj.
    public static final String DB_URL = "jdbc:mysql://localhost:3306/java_sims?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";//在问号之后的东西都是一些去重连接中可能会报错的地方

    public static final String username = "root"; //数据库账号
    public static final String password = "111111";//数据库密码

    private Connection connection = null;//初始化conn~
    private PreparedStatement pStatement = null;//初始化stat~
    private ResultSet rSet = null;//初始化结果

以上代码是调用JDBCjar包并且设置参数和初始化,版本低一点的JDBC包可以删除第一行中间的.jc有一点要注意的是 代码中 java_sims 是我的数据库名,还有在 java_sims 之后的可以不写,但是有可能会报错,还是建议写上至于参数是false还是true看你报错的地方让你设置什么
然后就是数据库账号密码 记得根据自己的写昂

然后就是一些先行初始化的东西

2、加载驱动

加载驱动
在这里我们能看见一个conn这个是调用数据库驱动,用来链接数据库。

3、关闭资源

在这里插入图片描述

4、插入记录

在这里插入图片描述

5、更新记录

在这里插入图片描述

6、删除记录

在这里插入图片描述

7、按学号查询学生记录

在这里插入图片描述

三、Swing(所有的窗口)

Swing+JDBC 因为这里我有一个文件包含了JDBC和Swing所以先把它拿来讲解

1)先是JDBC部分

JDBC部分

2)然后就是Swing部分

在这里插入图片描述

四、接下来就是放源码

我会将源码分JDBCSwing放在两个标题下,每个代码上面都有一个标题看表示文件名
在放JDBCSwing源码前有两个文件需要构造

Student

package StudentManager;

/**
 * 功能: 该文件是声明Studeent所需要的变量并且构造方法
 * 作者:Sherry
 * 日期:2022-06-02
 */

public class Student {

    private String name;
    private String gender;
    private String dob;
    private int batch;

    public Student(String name, String gender, String dob, int batch) {
        this.name = name;
        this.gender = gender;
        this.dob = dob;
        this.batch = batch;
    }

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender;
    }

    public String getDob() {
        return dob;
    }

    public int getBatch() {
        return batch;
    }

}

User

package StudentManager;

/**
 * 功能: 初始化管理员在数据库的username和password
 * 作者:Sherry
 * 日期:2022-06-06
 */
public class User {
    private String username;
    private String password;

    public User(String username, String password){ //在这申明用户的用户名和密码  在登录的时候会使用
        this.username = username;
        this.password = password;
    };

    //下面的getter和setter系统自动生成
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

还有一个文件需要写就是注册文字的监听

Regevent

package StudentManager;

import StudentManager.test.RegisterFrame;

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

/**
 * 功能: 鼠标对“注册”文字的监听
 * 作者:Sherry
 * 日期:2022-06-02
 */
//其实这里的没有必要当然我不想改了所以就将就用了
public class Regevent implements MouseListener {
    @Override
    public void mouseClicked(MouseEvent e) {
        //当鼠标左键按下的时候才会触发事件
        if(e.getButton()==MouseEvent.BUTTON1){
            JOptionPane.showMessageDialog(null, "hello");
            Register r = new Register("用户注册");
        }
    }

    @Override
    public void mousePressed(MouseEvent e) {
        System.out.println("按住经过");
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        System.out.println("按住鼠标");
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        System.out.println("滑动鼠标");
    }

    @Override
    public void mouseExited(MouseEvent e) {
        System.out.println("鼠标退出");
    }
}

JDBC代码

  • 下面就是JDBC所属代码

SQLHelp

package StudentManager;

/**
 * 功能: 运行SQL语句
 * 作者:Sherry
 * 日期:2022-06-02
 */

import java.sql.*;

public  class SQLHelp {

    public static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";//版本低的可以删除中间得cj.
    public static final String DB_URL = "jdbc:mysql://localhost:3306/java_sims?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";//在问好之后的东西都是一些去重连接中可能会报错的地方

    public static final String username = "root"; //数据库账号
    public static final String password = "111111";//数据库密码

    private Connection connection = null;//初始化conn~
    private PreparedStatement pStatement = null;//初始化stat~
    private ResultSet rSet = null;//初始化结果

    // 加载驱动
    // 静态初始化块(只执行一次)
    static {
        try {
            Class.forName(JDBC_DRIVER);
        } catch (ClassNotFoundException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();//抛出异常
        }
    }

    // 链接数据库
    public void  connectDB() {
        try {
            connection = DriverManager.getConnection(DB_URL,username,password);
            System.out.println("数据库链接成功");
        } catch (SQLException e) {
            System.out.println("数据库链接失败");
            e.printStackTrace();//链接失败抛出异常
        }
    }

    // 关闭资源
    public void close() {
        if(rSet != null) {
            try {
                rSet.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        if(pStatement != null) {
            try {
                pStatement.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        if(connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    //申明变量并且说明是SQL模块
    public void addStudent(int id, String nameString, String genderString, String dobString, int batch) throws SQLException {

        // try finally 无论是否抛出异常都将执行 finally 中的语句
        try {
            // 先链接到数据库
            connectDB();

            // sql 语句
            // 静态 sql 语句需要进行字符串拼接
            // 动态 sql 语句
            String addsql = "insert into student values(?, ?, ?, ?, ?)";//添加字段值

            pStatement = connection.prepareStatement(addsql);

            pStatement.setInt(1, id);
            pStatement.setString(2, nameString);
            pStatement.setString(3, genderString);
            pStatement.setString(4, dobString);
            pStatement.setInt(5, batch);

            pStatement.executeUpdate();

        } finally {

            close();

        }

    }

    public void addManeger(String username, String password) throws SQLException {

        // try finally 无论是否抛出异常都将执行 finally 中的语句
        try {
            // 先链接到数据库
            connectDB();

            // sql 语句
            // 静态 sql 语句需要进行字符串拼接
            // 动态 sql 语句
            String addsql = "insert into m_user values(?, ?)";//添加字段值

            pStatement = connection.prepareStatement(addsql);

            pStatement.setString(1, username);
            pStatement.setString(2, password);

            pStatement.executeUpdate();

        } finally {

            close();

        }

    }

    public void changeStudent(int id, String nameString, String genderString, String dobString, String batch) throws SQLException {

        try {
            connectDB();

            String changesql = "update student set name = ?, gender = ?, dob = ?, batch = ? where id = ?";

            pStatement = connection.prepareStatement(changesql);

            pStatement.setString(1, nameString);
            pStatement.setString(2, genderString);
            pStatement.setString(3, dobString);
            pStatement.setString(4, batch);
            pStatement.setInt(5, id);

            pStatement.executeUpdate();

        } finally {
            close();
        }

    }

    public void deletestudent(int id) throws SQLException {

        try {

            connectDB();

            String deleteString = "select * from student where id = ?";

            pStatement = connection.prepareStatement(deleteString);

            pStatement.setInt(1, id);

            pStatement.execute();

        } finally {
            close();
        }

    }
    public User userpassweord(String username) throws SQLException {
        try {
            connectDB();//调用数据库相关数据

            String slelectusername = "select * from m_user where username = ?";
            pStatement = connection.prepareStatement(slelectusername);
            pStatement.setString(1, username);
            rSet = pStatement.executeQuery();
            if (rSet.next()) {
                String usernameString = rSet.getString(1);
                String passwordString = rSet.getString(2);
                return new User(usernameString, passwordString);
            }else {
                return null;
            }
        } finally {
            close();
        }
    }

    public Student queryStudent(int id) throws SQLException {
        try {
            connectDB();

            String querysql = "select * from student where id = ?";
            pStatement = connection.prepareStatement(querysql);
            pStatement.setInt(1, id);
            // 三种方法执行
            // execute()	都可以使用,返回true或false
            // executeQuery() 专门用于查询,返回结果集
            // executeUpdate() 专门用于删除、更新
            rSet = pStatement.executeQuery();

            if(rSet.next()) {

                String nameString = rSet.getString(2);
                String genderString = rSet.getString(3);
                String dobString = rSet.getString(4);
                int batchString = rSet.getInt(5);

                // 查询到学生信息返回结果集
                return new Student(nameString, genderString, dobString, batchString);
            } else {
                // 没有查询到学生信息,返回null
                return null;
            }

        } finally {
            close();
        }

    }

}

SelectFrame

  • 因为JDBC本来是写在一起的这里我单独写了一个文件,我就把它并在JDBC内容里面
package StudentManager;

/**
 * 功能:
 * 作者:Sherry
 * 日期:2022-06-02
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.*;

public class SelectFrame extends JFrame {
    public static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";//版本低的可以删除中间得cj.
    public static final String DB_URL = "jdbc:mysql://localhost:3306/java_sims?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";//在问好之后的东西都是一些去重连接中可能会报错的地方

    public static final String username = "root"; //数据库账号
    public static final String password = "111111";//数据库密码

    //创建窗口
    public SelectFrame() throws SQLException {

//        JTable resultarea = new JTable();

        Connection connection=null;//初始化conn
        connection = DriverManager.getConnection(DB_URL,username,password);

        PreparedStatement preparedStatement=connection.prepareStatement("select *from student");//sql语句编译预处理
        ResultSet res=preparedStatement.executeQuery();//获取ResultSet结果集

        res.last();//游标移动到查询到的数据库数据记录的最后一条
        int row=res.getRow();//获取记录的总条数
        res.beforeFirst();//游标回到第一个记录前的位置


        String arr[]= {"姓名","性别","出生日期","班级"};//定义表格的列名称
        String comm[][] = new String[row][4];//row行,4列

        res.next();//游标回到第一个记录的位置
        for(int i=0;i<row;i++) {
            comm[i][0]=res.getString("name");
            comm[i][1]=res.getString("sex");
            comm[i][2]=res.getString("birthday");
            comm[i][3]=res.getString("gender");
            res.next();
        }

        JTable jTable=new JTable(comm,arr);
        jTable.setPreferredScrollableViewportSize(new Dimension(800,200));//设置可滚动视图的大小
        JScrollPane jScrollPane=new JScrollPane(jTable);
        add(jScrollPane,BorderLayout.CENTER);//将滚动条放到窗体
//        setDefaultCloseOperation(EXIT_ON_CLOSE);//这个是关闭全部程序
        setVisible(true);//设置窗体可见
        validate();//设置组件可见
//        setLocationRelativeTo(null);
        this.setBounds(550,400,800,200);
        pack();//自动调整组建大小使每个组键都能显示
        connection.close();

        //设置程序关闭方式,
        this.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                int choice = JOptionPane.showConfirmDialog(null, "关闭该窗口?","学生管理", JOptionPane.YES_NO_OPTION);
                if (choice == JOptionPane.YES_OPTION) {
                    dispose();
                } else {
                    try {
                        new SelectFrame();
                    } catch (SQLException ex) {
                        ex.printStackTrace();
                    }
                }
            }


        });
    }
}

Swing

Start

这个文件是启动文件哈,启动程序的时候用这个启动

package StudentManager;

/**
 * 功能: 执行程序
 * 作者:Sherry
 * 日期:2022-06-06
 */
public class Start {
    public static void main(String[] args) {
        LoginStar l = new LoginStar();
    }

}

LoginStar

package StudentManager;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;


/**
 * 功能: LoginFrame
 * 作者:Sherry
 * 日期:2022-05-16
 */
public class LoginStar extends JFrame {
    //需要5个标签   一个文本框   一个密码框    一个登录按钮
    JLabel bgimg; //定义背景标签
    JLabel username; //定义账号标签
    JLabel password; //定义密码标签
//    JLabel title; //定义标题标签
    JTextField usernametext;//输入账号的文本框
    JPasswordField passwordtext;//输入密码的文本框
    JButton login; //登录按钮
    JLabel register;//注册标签
    //窗口变量
    final int WIDTH = 300;//设置顶层框架的宽度
    final int HEIGHT = 300;//设置顶层框架的高度
    //定义一个箱子
    JPanel p;//放图片的容器
    Regevent regeveent;//定义注册标签的书签监听事件

    public LoginStar() {
        init();
        setResizable(false); //窗口的大小不可变
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置默认关闭方式
        validate();//让组件生效
        setVisible(true);   //设置当前窗口是否可以显示
    }

    private void init() {
        //给容器创建对象
        p = new JPanel();
        p.setBounds(0, 0, WIDTH, HEIGHT);
        p.setSize(300,300);
        p.setLayout(null); // 设置布局为空
        //设置当前窗口大小
//        this.setBounds();
        Toolkit kit = Toolkit.getDefaultToolkit();//获取对象大小  设置窗口位置
        Dimension screenSize = kit.getScreenSize();
        int width = screenSize.width;
        int height = screenSize.height;
        int x = (width - WIDTH) / 2;
        int y = (height - HEIGHT) / 2;
//        this.setSize(WIDTH, HEIGHT);
//        this.setLocation(x, y);//设置位置和窗口大小,以上设置背景设置图标
        this.setBounds(x, y, WIDTH, HEIGHT);
        this.setTitle("登录");
        this.add(p); //主窗口添加  容器 p

//        //背景图片会导致下面不能直接显示因为层次不对
//        ImageIcon img = new ImageIcon("src/img/bg.png");//设置背景赌片
//        bgimg = new JLabel(img);
//        //设置图片位置
//        bgimg.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
//        p.add(bgimg);  //添加图片到容器  p

        username = new JLabel("账号");
        password = new JLabel("密码");
//        title = new JLabel("登录");
        login = new JButton("登录");
        register = new JLabel("注册");

//        title.setSize(30,30);
        usernametext = new JTextField(20);
        passwordtext = new JPasswordField(20);
        passwordtext.setEchoChar('*');

//        title.setBounds(10,10,120,25);
        passwordtext.setBounds(125, 120, 120, 25);
        usernametext.setBounds(125, 90, 120, 25);
        password.setBounds(60, 120, 60, 25);
        username.setBounds(60, 90, 60, 25);
//        register.setBounds(0,200,200,30);
        login.setBounds(90,180,60,25);
        register.setBounds(10,200,100,100);

//        p.setVisible(true);
//        p.add(register);
        p.add(username);
        p.add(password);
//        p.add(title);
        p.add(usernametext);
        p.add(passwordtext);
        p.add(login);
        p.add(register);

        login.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String strusername = usernametext.getText();
                String strpassword = new String(passwordtext.getPassword());
                SQLHelp sqlHelp =  new SQLHelp();

                try {
                    User users = sqlHelp.userpassweord(strusername);
                    String username = users.getUsername();
                    String password = users.getPassword();
                    System.out.println(username);
                    System.out.println(password);

                    if (strusername.equals(username) && strpassword.equals(password)){
                        JOptionPane.showMessageDialog(null,"登录成功","登陆成功提示窗口",JOptionPane.INFORMATION_MESSAGE);
    //                    Register r = new Register();
    //                    r.setVisible(true);
                        MainFrame main = new MainFrame();
                        main.setVisible(true);
    //                    CommonFrame c = new CommonFrame();

                    }else {
                        JOptionPane.showMessageDialog(null,"登录失败,若没有账号点击左下角注册","登录失败提示窗口",JOptionPane.INFORMATION_MESSAGE);
    //                    Register r = new Register();//确定之后自动跳入注册页面
    //                    r.setVisible(true);
                    }
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        });
//        register.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                Register r = new Register();
//                r.setVisible(true);
//            }
//        });
        allEvent();
    }
    //所有处理事件都在这个地方去写
    void allEvent(){
        regeveent = new Regevent();
        
        register.addMouseListener(regeveent);
    }

}

Register

package StudentManager;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

/**
 * 功能: 注册账号
 * 作者:Sherry
 * 日期:2022-05-30
 */
public class Register extends JFrame {
    JLabel username;
    JLabel password;
    JLabel passwordAgain;

    JTextField usernameFile;
    JPasswordField passwordFile;
    JPasswordField PasswordFileAgain;
//    FlowLayout flowLayout;

    JButton sign;

    JPanel p;
    JPanel p1;

//    private Connection connection = null;//初始化conn~
//    private PreparedStatement pStatement = null;//初始化stat~
//    private ResultSet rSet = null;//初始化结果

    final int WIDTH = 410;
    final int HEIGHT = 610;

//    flowLayout = new FlowLayout(FlowLayout.CENTER);

    public Register() {
        init();//调用init方法
        setResizable(false);//这是不可变窗口
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置窗口关闭默认关闭方式
        validate();
        setVisible(true);//可显示
        Toolkit kit = Toolkit.getDefaultToolkit();//获取屏幕宽度
        Dimension screenSize = kit.getScreenSize();//初始化变量
        int width = screenSize.width;//这边都是设置大小的,当然后面我老师i给我讲的时候发现根本不需要
        int height = screenSize.height;
        int x = (width - WIDTH) / 2;
        int y = (height - HEIGHT) / 2;
        setBounds(x, y, WIDTH, HEIGHT);//设置主窗口位置和大小
        setTitle("账号注册");//设置主窗口的标题
    }

    void init() {
//        p.setBorder(BorderFactory.createTitledBorder("基本信息处理"));
//        p.setPreferredSize(new Dimension(WIDTH, HEIGHT));
//        p.setLayout(new FlowLayout(FlowLayout.CENTER));
//        p.setBounds(0,0,WIDTH,HEIGHT);
//        p.setLayout(null);
//        p.setOpaque(false);
        p = new JPanel();//初始化窗口p
        p.setLayout(null);//设置布局为空
        p.setVisible(true);//设置可见

        p1 = new JPanel();//这里因为不知道什么原因如果不重新声明一个Panle那么我的内容显示不出来
//        p1.setLayout(null);
        p1.setVisible(true);//设置可见
        p1.setLayout(null);//设置恐怖剧
        p1.setBounds(0, 0, 400, 600);//设置位置和大小

        username = new JLabel("账号:");//这里全是定义所需要的元素
        password = new JLabel("密码:");
        passwordAgain = new JLabel("确认密码:");

        usernameFile = new JTextField(20);//这里是设置长度
        passwordFile = new JPasswordField(20);//注意TextFile和PasswordFile在后续获取的时候不一样
        PasswordFileAgain = new JPasswordField(20);

        passwordFile.setEchoChar('*');//这个是输入密码的填充
        PasswordFileAgain.setEchoChar('*');

        sign = new JButton("注册");//设置注册按钮

        //这里开始设置元素位置和大小
        sign.setBounds(160, 300, 100, 50);

        username.setBounds(130, 150, 40, 20);
        password.setBounds(130, 200, 40, 20);
        passwordAgain.setBounds(130, 250, 120, 20);

        usernameFile.setBounds(200, 150, 100, 20);
        passwordFile.setBounds(200, 200, 100, 20);
        PasswordFileAgain.setBounds(200, 250, 100, 20);

        //将元素逐层添加
        p1.add(username);
        p1.add(password);
        p1.add(passwordAgain);
        p1.add(usernameFile);
        p1.add(passwordFile);
        p1.add(PasswordFileAgain);
        p1.add(sign);
        p.add(p1);
        this.add(p);

        //这里我们为注册按钮添加了监听事件
        sign.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String strusername = usernameFile.getText();//获取usernameFile的内容
                String strpassword = new String(passwordFile.getPassword());//在这里我们获取usernameFile和passwordFile方式就不一样了,看好
                String strpasswordAgain = new String(PasswordFileAgain.getPassword());
                SQLHelp sqlHelp = new SQLHelp();//这里我们调用SQLHelp文件  我在那里写了注册所需的模块

                try {
                    User users = sqlHelp.userpassweord(strusername);  //这里我们先接收看看能不能接收到数据

                    if (users == null) {//没数据说明没有账户可以注册
                        if (strpassword.equals(strpasswordAgain)) {
                            System.out.println("注册成功");//判断是否进入
                            String username = strusername;//当然这里也可以不用在初始化一次,因为上面可以直接使用
                            String password = strpassword;
                            sqlHelp.addManeger(username,password);//这里就是向SQLHelp文件里卖弄的addManager模块传入数据
                            JOptionPane.showMessageDialog(null, "注册成功", "点击确定后返回登录界面", JOptionPane.INFORMATION_MESSAGE);

                        //这里是两次密码不同
                        } else {
                            System.out.println("注册失败");
                            JOptionPane.showMessageDialog(null, "注册失败,请检查两次密码是否相同", "登录失败提示窗口", JOptionPane.INFORMATION_MESSAGE);
                        }
                    //这里是账号重复
                    }else{
                        System.out.println("已有账号无法注册");//控制台提示信息
                        JOptionPane.showMessageDialog(null,"注册失败了,已拥有该账号,请检查密码是否输入错误,目前不支持找回密码","账号已有窗口",JOptionPane.INFORMATION_MESSAGE);
//                        dispose();
                    }
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        });
    }


    //这里是单独测试Register文件的时候用的
    public static void main(String[] args) {
        new Register();
    }

}

MainFrame

package StudentManager;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

public class MainFrame extends JFrame {

    private JPanel contentPane;

//    // 有了main函数才可以单独运行   取消注释可以单独测试该文件
//    public static void main(String[] args) {
//        EventQueue.invokeLater(new Runnable() {
//            public void run() {
//                try {
//                    MainFrame frame = new MainFrame();
//                    frame.setVisible(true);
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            }
//        });
//    }

    public MainFrame() {
        // 设置大小不可改变
        setResizable(false);
        // 设置标题
        setTitle("学生管理系统");
        // 由于这是主页面,所有当主页面关闭的时候,程序就直接退出
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // setBounds(int x,int y,int width,int height);
        // x 和 y 是窗口打开时的位置
        // width 和 height 是窗口打宽度和高度
        setBounds(100, 100, 450, 500);
        // setLocationRelativeTo(c)
        // 设置窗口相对于 c 的位置,当 c 为空或者 null 时,默认为是相对于屏幕中央
        setLocationRelativeTo(null);
        // 实例化一个 pane
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel lblNewLabel = new JLabel("学生管理系统");
        lblNewLabel.setForeground(Color.RED);
        lblNewLabel.setFont(new Font("宋体", Font.BOLD, 25));
        lblNewLabel.setBounds(140, 10, 163, 44);
        contentPane.add(lblNewLabel);

        JButton addButton = new JButton("添加学生");
        // addActionListener 注册监听器
        addButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 设置新窗口可见
                new AddFrame().setVisible(true);
            }
        });

        addButton.setFont(new Font("宋体", Font.PLAIN, 18));
        addButton.setBounds(167, 64, 114, 37);
        contentPane.add(addButton);

        JButton changeButton = new JButton("修改信息");
        changeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 同上
                new ChangeFrame().setVisible(true);
            }
        });
        changeButton.setFont(new Font("宋体", Font.PLAIN, 18));
        changeButton.setBounds(167, 121, 114, 37);
        contentPane.add(changeButton);

        JButton deleteButton = new JButton("删除学生");
        deleteButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 同上
                new DeleteFrame().setVisible(true);
            }
        });
        deleteButton.setFont(new Font("宋体", Font.PLAIN, 18));
        deleteButton.setBounds(167, 180, 114, 37);
        contentPane.add(deleteButton);

        JButton queryButton = new JButton("查询信息");
        queryButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 同上
                new QueryFrame().setVisible(true);
            }
        });
        queryButton.setFont(new Font("宋体", Font.PLAIN, 18));
        queryButton.setBounds(167, 240, 114, 37);
        contentPane.add(queryButton);

        JButton selectButton = new JButton("查询所有学生记录");
        selectButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    SelectFrame s = new SelectFrame();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        });
        selectButton.setBounds(134,300,180,37);
        selectButton.setFont(new Font("宋体", Font.PLAIN, 18));
        contentPane.add(selectButton);
    }
}

QueryFrame

package StudentManager;

/**
 * 功能: 查询窗口
 * 作者:Sherry
 * 日期:2022-06-02
 */

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

public class QueryFrame extends JFrame {

    private JPanel contentPane;
    private JTextField idField;
    private JTextField nameField;
    private JTextField genderField;
    private JTextField dobField;
    private JTextField batchField;
    private JTextField searchField;


    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    QueryFrame frame = new QueryFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }


    public QueryFrame() {
        setResizable(false);
        setTitle("查询信息");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setBounds(100, 100, 450, 470);
        setLocationRelativeTo(null);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

        JPanel panel = new JPanel();
        contentPane.add(panel);
        panel.setLayout(null);

        JLabel lblNewLabel = new JLabel("请输入要查找的学生的学号:");
        lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel.setBounds(71, 0, 208, 29);
        panel.add(lblNewLabel);

        JLabel lblNewLabel_1 = new JLabel("学号:");
        lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1.setBounds(71, 105, 50, 30);
        panel.add(lblNewLabel_1);

        idField = new JTextField();
        idField.setEditable(false);
        idField.setBounds(143, 99, 240, 45);
        panel.add(idField);
        idField.setColumns(10);

        JLabel lblNewLabel_1_1 = new JLabel("姓名:");
        lblNewLabel_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1.setBounds(71, 160, 50, 30);
        panel.add(lblNewLabel_1_1);

        nameField = new JTextField();
        nameField.setColumns(10);
        nameField.setBounds(143, 154, 240, 45);
        panel.add(nameField);

        JLabel lblNewLabel_1_1_1 = new JLabel("性别:");
        lblNewLabel_1_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1_1.setBounds(71, 215, 50, 30);
        panel.add(lblNewLabel_1_1_1);

        genderField = new JTextField();
        genderField.setColumns(10);
        genderField.setBounds(143, 209, 240, 45);
        panel.add(genderField);

        JLabel lblNewLabel_1_1_1_1 = new JLabel("出生日期:");
        lblNewLabel_1_1_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1_1_1.setBounds(41, 270, 80, 30);
        panel.add(lblNewLabel_1_1_1_1);

        dobField = new JTextField();
        dobField.setColumns(10);
        dobField.setBounds(143, 264, 240, 45);
        panel.add(dobField);

        JLabel lblNewLabel_1_1_1_2 = new JLabel("班级:");
        lblNewLabel_1_1_1_2.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1_1_2.setBounds(71, 325, 50, 30);
        panel.add(lblNewLabel_1_1_1_2);

        batchField = new JTextField();
        batchField.setColumns(10);
        batchField.setBounds(143, 319, 240, 45);
        panel.add(batchField);

        searchField = new JTextField();
        searchField.setBounds(71, 39, 208, 45);
        panel.add(searchField);
        searchField.setColumns(10);

        JButton searchButton = new JButton("查找");
        searchButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                // 1.读出要查询的学生输入的id
                // 因为学生的学号是唯一的,所以我们根据学号查询后,只会有一条数据
                // 转化一下数据类型
                int id = Integer.parseInt(searchField.getText());

                // 2.执行JDBC语句
                try {
                    SQLHelp sqlHelp = new SQLHelp();

                    Student student = sqlHelp.queryStudent(id);

                    // 3.将查询结果填到文本框中
                    // 前提是学生存在
                    if(student != null) {
                        idField.setText(String.valueOf(id));
                        nameField.setText(student.getName());
                        genderField.setText(student.getGender());//性别
                        dobField.setText(student.getDob());//出生日期
                        batchField.setText(String.valueOf(student.getBatch()));//班级
                    } else {
                        // 此时学生不存在,提示用户,不存在该学生
                        JOptionPane.showMessageDialog(QueryFrame.this, "无此学生");
                    }

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

            }
        });
        searchButton.setFont(new Font("宋体", Font.PLAIN, 18));
        searchButton.setBounds(289, 42, 97, 39);
        panel.add(searchButton);
    }
}

DeleteFrame

package StudentManager;

/**
 * 功能: 查询窗口
 * 作者:Sherry
 * 日期:2022-06-02
 */

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

public class QueryFrame extends JFrame {

    private JPanel contentPane;
    private JTextField idField;
    private JTextField nameField;
    private JTextField genderField;
    private JTextField dobField;
    private JTextField batchField;
    private JTextField searchField;


    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    QueryFrame frame = new QueryFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }


    public QueryFrame() {
        setResizable(false);
        setTitle("查询信息");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setBounds(100, 100, 450, 470);
        setLocationRelativeTo(null);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

        JPanel panel = new JPanel();
        contentPane.add(panel);
        panel.setLayout(null);

        JLabel lblNewLabel = new JLabel("请输入要查找的学生的学号:");
        lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel.setBounds(71, 0, 208, 29);
        panel.add(lblNewLabel);

        JLabel lblNewLabel_1 = new JLabel("学号:");
        lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1.setBounds(71, 105, 50, 30);
        panel.add(lblNewLabel_1);

        idField = new JTextField();
        idField.setEditable(false);
        idField.setBounds(143, 99, 240, 45);
        panel.add(idField);
        idField.setColumns(10);

        JLabel lblNewLabel_1_1 = new JLabel("姓名:");
        lblNewLabel_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1.setBounds(71, 160, 50, 30);
        panel.add(lblNewLabel_1_1);

        nameField = new JTextField();
        nameField.setColumns(10);
        nameField.setBounds(143, 154, 240, 45);
        panel.add(nameField);

        JLabel lblNewLabel_1_1_1 = new JLabel("性别:");
        lblNewLabel_1_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1_1.setBounds(71, 215, 50, 30);
        panel.add(lblNewLabel_1_1_1);

        genderField = new JTextField();
        genderField.setColumns(10);
        genderField.setBounds(143, 209, 240, 45);
        panel.add(genderField);

        JLabel lblNewLabel_1_1_1_1 = new JLabel("出生日期:");
        lblNewLabel_1_1_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1_1_1.setBounds(41, 270, 80, 30);
        panel.add(lblNewLabel_1_1_1_1);

        dobField = new JTextField();
        dobField.setColumns(10);
        dobField.setBounds(143, 264, 240, 45);
        panel.add(dobField);

        JLabel lblNewLabel_1_1_1_2 = new JLabel("班级:");
        lblNewLabel_1_1_1_2.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1_1_2.setBounds(71, 325, 50, 30);
        panel.add(lblNewLabel_1_1_1_2);

        batchField = new JTextField();
        batchField.setColumns(10);
        batchField.setBounds(143, 319, 240, 45);
        panel.add(batchField);

        searchField = new JTextField();
        searchField.setBounds(71, 39, 208, 45);
        panel.add(searchField);
        searchField.setColumns(10);

        JButton searchButton = new JButton("查找");
        searchButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                // 1.读出要查询的学生输入的id
                // 因为学生的学号是唯一的,所以我们根据学号查询后,只会有一条数据
                // 转化一下数据类型
                int id = Integer.parseInt(searchField.getText());

                // 2.执行JDBC语句
                try {
                    SQLHelp sqlHelp = new SQLHelp();

                    Student student = sqlHelp.queryStudent(id);

                    // 3.将查询结果填到文本框中
                    // 前提是学生存在
                    if(student != null) {
                        idField.setText(String.valueOf(id));
                        nameField.setText(student.getName());
                        genderField.setText(student.getGender());//性别
                        dobField.setText(student.getDob());//出生日期
                        batchField.setText(String.valueOf(student.getBatch()));//班级
                    } else {
                        // 此时学生不存在,提示用户,不存在该学生
                        JOptionPane.showMessageDialog(QueryFrame.this, "无此学生");
                    }

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

            }
        });
        searchButton.setFont(new Font("宋体", Font.PLAIN, 18));
        searchButton.setBounds(289, 42, 97, 39);
        panel.add(searchButton);
    }
}

ChangeFrame

package StudentManager;

/**
 * 功能:
 * 作者:Sherry
 * 日期:2022-06-02
 */

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

public class ChangeFrame extends JFrame {

    private JPanel contentPane;
    private JTextField idField;
    private JTextField nameField;
    private JTextField genderField;
    private JTextField dobField;
    private JTextField batchField;
    private JTextField searchField;


    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ChangeFrame frame = new ChangeFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public ChangeFrame() {
        setResizable(false);
        setTitle("修改信息");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setBounds(100, 100, 450, 470);
        setLocationRelativeTo(null);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

        JPanel panel = new JPanel();
        contentPane.add(panel);
        panel.setLayout(null);

        JLabel lblNewLabel = new JLabel("请输入要修改的学生的学号:");
        lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel.setBounds(71, 0, 208, 29);
        panel.add(lblNewLabel);

        JLabel lblNewLabel_1 = new JLabel("学号:");
        lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1.setBounds(71, 105, 50, 30);
        panel.add(lblNewLabel_1);

        idField = new JTextField();
        idField.setEditable(false);
        idField.setBounds(143, 99, 240, 45);
        panel.add(idField);
        idField.setColumns(10);

        JLabel lblNewLabel_1_1 = new JLabel("姓名:");
        lblNewLabel_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1.setBounds(71, 160, 50, 30);
        panel.add(lblNewLabel_1_1);

        nameField = new JTextField();
        nameField.setColumns(10);
        nameField.setBounds(143, 154, 240, 45);
        panel.add(nameField);

        JLabel lblNewLabel_1_1_1 = new JLabel("性别:");
        lblNewLabel_1_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1_1.setBounds(71, 215, 50, 30);
        panel.add(lblNewLabel_1_1_1);

        genderField = new JTextField();
        genderField.setColumns(10);
        genderField.setBounds(143, 209, 240, 45);
        panel.add(genderField);

        JLabel lblNewLabel_1_1_1_1 = new JLabel("出生日期:");
        lblNewLabel_1_1_1_1.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1_1_1.setBounds(41, 270, 80, 30);
        panel.add(lblNewLabel_1_1_1_1);

        dobField = new JTextField();
        dobField.setColumns(10);
        dobField.setBounds(143, 264, 240, 45);
        panel.add(dobField);

        JLabel lblNewLabel_1_1_1_2 = new JLabel("班级:");
        lblNewLabel_1_1_1_2.setFont(new Font("宋体", Font.PLAIN, 16));
        lblNewLabel_1_1_1_2.setBounds(71, 325, 50, 30);
        panel.add(lblNewLabel_1_1_1_2);

        batchField = new JTextField();
        batchField.setColumns(10);
        batchField.setBounds(143, 319, 240, 45);
        panel.add(batchField);

        JButton changeButton = new JButton("修改");
        changeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                int id = Integer.parseInt(searchField.getText());

                String nameString = nameField.getText();

                String gendeString = genderField.getText();

                String dobString = dobField.getText();

                String batch = batchField.getText();

                SQLHelp sqlHelp = new SQLHelp();

                try {
                    sqlHelp.changeStudent(id, nameString, gendeString, dobString, batch);

                    JOptionPane.showMessageDialog(ChangeFrame.this, "修改成功!");
                } catch (SQLException e) {
                    JOptionPane.showMessageDialog(ChangeFrame.this, "修改失败!");
                    e.printStackTrace();
                }

            }
        });
        changeButton.setFont(new Font("宋体", Font.PLAIN, 18));
        changeButton.setBounds(182, 389, 97, 33);
        panel.add(changeButton);

        searchField = new JTextField();
        searchField.setBounds(71, 39, 208, 45);
        panel.add(searchField);
        searchField.setColumns(10);

        JButton searchButton = new JButton("查找");
        searchButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){

                int id = Integer.parseInt(searchField.getText());

                try {

                    SQLHelp sqlHelp = new SQLHelp();

                    Student student = sqlHelp.queryStudent(id);

                    if(student != null) {

                        // id 是直接读入的,所以就不需要从数据库中读出了
                        idField.setText(String.valueOf(id));
                        nameField.setText(student.getName());
                        genderField.setText(student.getGender());
                        dobField.setText(student.getDob());
                        batchField.setText(String.valueOf(student.getBatch()));

                    } else {
                        JOptionPane.showMessageDialog(ChangeFrame.this, "无此用户");
                    }

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

            }
        });
        searchButton.setFont(new Font("宋体", Font.PLAIN, 18));
        searchButton.setBounds(289, 42, 97, 39);
        panel.add(searchButton);
    }
}


AddFrame

package StudentManager;

/**
 * 功能:
 * 作者:Sherry
 * 日期:2022-06-02
 */

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

public class AddFrame extends JFrame {

    private JPanel contentPane;
    private JTextField idField;
    private JTextField nameField;
    private JTextField genderField;
    private JTextField dobField;
    private JTextField batchField;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    AddFrame frame = new AddFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public AddFrame() {
        // 和前面类似
        setResizable(false);
        setTitle("添加学生");
        // 这个地方,添加学生只是这个程序的一部分,所以当关闭这部分的时候,程序不直接退出,只是关闭该部分程序
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setBounds(100, 100, 450, 470);
        setLocationRelativeTo(null);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

        JPanel panel = new JPanel();
        contentPane.add(panel);
        panel.setLayout(null);

        JLabel TitleLabel = new JLabel("请输入新学生的信息:");
        TitleLabel.setFont(new Font("宋体", Font.BOLD, 20));
        TitleLabel.setBounds(71, 34, 220, 45);
        panel.add(TitleLabel);

        JLabel idLabel = new JLabel("学号:");
        idLabel.setFont(new Font("宋体", Font.PLAIN, 16));
        idLabel.setBounds(71, 105, 50, 30);
        panel.add(idLabel);

        idField = new JTextField();
        idField.setBounds(143, 99, 240, 45);
        panel.add(idField);
        idField.setColumns(10);

        JLabel nameLabel = new JLabel("姓名:");
        nameLabel.setFont(new Font("宋体", Font.PLAIN, 16));
        nameLabel.setBounds(71, 160, 50, 30);
        panel.add(nameLabel);

        nameField = new JTextField();
        nameField.setColumns(10);
        nameField.setBounds(143, 154, 240, 45);
        panel.add(nameField);

        JLabel genderLabel = new JLabel("性别:");
        genderLabel.setFont(new Font("宋体", Font.PLAIN, 16));
        genderLabel.setBounds(71, 215, 50, 30);
        panel.add(genderLabel);

        genderField = new JTextField();
        genderField.setColumns(10);
        genderField.setBounds(143, 209, 240, 45);
        panel.add(genderField);

        JLabel dobLabel = new JLabel("出生日期:");
        dobLabel.setFont(new Font("宋体", Font.PLAIN, 16));
        dobLabel.setBounds(41, 270, 80, 30);
        panel.add(dobLabel);

        dobField = new JTextField();
        dobField.setColumns(10);
        dobField.setBounds(143, 264, 240, 45);
        panel.add(dobField);

        JLabel batchLabel = new JLabel("班级:");
        batchLabel.setFont(new Font("宋体", Font.PLAIN, 16));
        batchLabel.setBounds(71, 325, 50, 30);
        panel.add(batchLabel);

        batchField = new JTextField();
        batchField.setColumns(10);
        batchField.setBounds(143, 319, 240, 45);
        panel.add(batchField);

        JButton addButton = new JButton("添加");
        // 添加鼠标监听事件
        addButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 先取出数据
                // getText() 返回字符串类型的
                // Integer.parseInt 数据类型转换
                int id = Integer.parseInt(idField.getText());

                String nameString = nameField.getText();

                String genderString = genderField.getText();

                String dobfieldString = dobField.getText();

                int batch = Integer.parseInt(batchField.getText());
                // 输出一下学生的信息,方便修改
                System.out.println(id + "\t" + nameString + "\t" + genderString + "\t" + dobfieldString + "\t" + batch);
                // SQLHelp 是自己写的一个工具类
                SQLHelp sqlHelp = new SQLHelp();
                try {
                    // 调用添加学生信息的方法
                    sqlHelp.addStudent(id, nameString, genderString, dobfieldString, batch);
                    // 弹出对话框,提示用户添加成功
                    JOptionPane.showMessageDialog(AddFrame.this, "添加成功!");
                } catch (SQLException e1) {
                    // 这里捕获一下异常,因为学生的学号是唯一的,所以当学号已经存在的时候,提示用户,该学生信息已存在
                    // 异常代码为 23000
                    if(e1.getSQLState().equals("23000")) {
                        JOptionPane.showMessageDialog(AddFrame.this, "添加失败!该学生已存在");
                    }
                    e1.printStackTrace();
                }

            }
        });
        addButton.setFont(new Font("宋体", Font.PLAIN, 18));
        addButton.setBounds(182, 389, 97, 33);
        panel.add(addButton);
    }
}

我在这设置一个标题

作者写这边博客也不容易,对你有帮助就来个一键三连咋样?
对了有个不懂的地方可以留言或者私信,我看见了会回你的~
芭芭拉,闪耀登场~

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:40:05  更:2022-06-14 22:43:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 20:53:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码