如果新的月份到来,我如何能够从ONE重置交易号码...例如,最后一个条目是17020005变为17030001.代码正在运行但未在新月到来时重置交易号码。 我正在使用的代码是
public void new(){
Date date =new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyMM");
String time = sdf.format(date);
try{
Connection con = new Connection ();
con.openConnection();
con.statement = con.dbConnection.createStatement();
ResultSet rs = con.statement.executeQuery("select right(id_sell,4) as id from sell");
if (rs.first()==false){
txtId.setText(time+"0001");
}
else
{
rs.last();
int no = rs.getInt(1)+1;
String cno = String.valueOf(no);
int pjg_cno = cno.length();
for (int i=0;i<4-pjg_cno;i++){
cno = "0"+cno;
}
txtId.setText(time+cno);
}
}catch (Exception e){
JOptionPane.showMessageDialog(null, "Fail!");
}
}
答案 0 :(得分:0)
正如亨利建议的那样,它看起来像你的&#34; id_sell&#34;值由年,月和唯一整数组成 - 如果是这样,您可以更改SQL查询以包含WHERE子句以匹配时间字符串的前四位数字WHERE id_sell LIKE '1703%'
。
但是,长期(假设您控制数据库结构),我建议考虑单独存储这些值 - 如果您有month
字段和transaction_id
字段,它会查询这些数据会更容易,更有效。
我还建议考虑是否可以使用序列在数据库上生成ID - 这个java代码难以保证唯一性并引发潜在的并发问题。