你好,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);
}
}```
1条答案
按热度按时间tvz2xvvm1#
问题在于:
你的子串也包括年份。
如果更改为:
它将按预期工作。
不过,我会重新考虑这个模式。最好把原子场保留一年和一个数字id;并基于这些字段来计算java代码中的学生id,而无需调用substring方法。