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

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

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

  1. private void StudentAutoID()
  2. {
  3. try {
  4. String sql="SELECT StudentID FROM students ORDER BY StudentID DESC LIMIT 1";
  5. PreparedStatement pst=con.prepareStatement(sql);
  6. ResultSet rs=pst.executeQuery();
  7. if(rs.next())
  8. {
  9. Date d=new Date();
  10. int year=d.getYear();
  11. int currentYear = year+1900;
  12. String rnno=rs.getString("StudentID");
  13. int co=rnno.length();
  14. String txt= rnno.substring(0, 2);
  15. String num=rnno.substring(2, co);
  16. int n=Integer.parseInt(num);
  17. n++;
  18. String snum=Integer.toString(n);
  19. String ftxt=txt+currentYear+snum;
  20. jTextFieldstudentid.setText(ftxt);
  21. }
  22. else
  23. {
  24. jTextFieldstudentid.setText("ST2020000");
  25. }
  26. } catch (Exception e) {
  27. JOptionPane.showMessageDialog(rootPane, e);
  28. }
  29. }```
tvz2xvvm

tvz2xvvm1#

问题在于:

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

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

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

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

相关问题