如何使用mysql在javanetbeans中自动增加id,并在id中插入当前年份或日期

sbdsn5lh  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(292)

你好,evryone正在开发一个学生管理系统,为了在mysql数据库中保存学生信息,我使用了一个自动递增的方法,但是我想让所有的studentid从“st”开始,然后是“currentyear”,然后是一个自动递增的数字,在我设计并命名为“jtextfieldstudentid”的jtextfield中播放问题是,当我运行文件时,输出与我需要的不一致,在mysql db的students表中,最后一个id=“st2020001”,但在jtextfield中,我得到的是“st2020001200002”而不是“st2020002”,请帮助,我不知道我的代码是否有问题。

private void StudentAutoID()
     {
         try {
            String sql="SELECT StudentID FROM students ORDER BY StudentID DESC LIMIT 1";       
            PreparedStatement  pst=con.prepareStatement(sql);
            ResultSet rs=pst.executeQuery();
            if(rs.next())
                {
                Date d=new Date();
                int year=d.getYear();
                int currentYear = year+1900;
                String rnno=rs.getString("StudentID");
                int co=rnno.length();
                String txt= rnno.substring(0, 2);
                String num=rnno.substring(2, co);
                int n=Integer.parseInt(num);
                n++;
                String snum=Integer.toString(n);
                String ftxt=txt+currentYear+snum;
                jTextFieldstudentid.setText(ftxt);

                }
            else
                {
                jTextFieldstudentid.setText("ST2020000");
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(rootPane, e);
            }

     }```
tvz2xvvm

tvz2xvvm1#

问题在于:

String num=rnno.substring(2, co);

你的子串也包括年份。
如果更改为:

String num=rnno.substring(6, co);

它将按预期工作。
不过,我会重新考虑这个模式。最好把原子场保留一年和一个数字id;并基于这些字段来计算java代码中的学生id,而无需调用substring方法。

相关问题