如果新月到来,如何重置交易数量

时间:2017-02-05 07:34:37

标签: java

如果新的月份到来,我如何能够从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!");
    }
}

1 个答案:

答案 0 :(得分:0)

正如亨利建议的那样,它看起来像你的&#34; id_sell&#34;值由年,月和唯一整数组成 - 如果是这样,您可以更改SQL查询以包含WHERE子句以匹配时间字符串的前四位数字WHERE id_sell LIKE '1703%'

但是,长期(假设您控制数据库结构),我建议考虑单独存储这些值 - 如果您有month字段和transaction_id字段,它会查询这些数据会更容易,更有效。

我还建议考虑是否可以使用序列在数据库上生成ID - 这个java代码难以保证唯一性并引发潜在的并发问题。