使用Java使用数据库每天重置自动编号

时间:2015-01-07 10:55:19

标签: java mysql sql string auto-increment

我为我的迷你商店制作了一些软件,我真的很困惑在我的地方购物的号码排队顾客。请有人帮助我。 我有一个方法,其中包含从我的客户生成新队列的内容。但是当我在第二天打开我的应用程序时,我希望队列再次重置为1。

我的sytax Java like =

public void acak() {
    try {
        String generate = "SELECT COALESCE (MAX(no_antrian),0) AS kode from transaksi  where tg_transaksi='" + tanggal + "'";
        Statement stat = con.createStatement();
        ResultSet res = stat.executeQuery(generate);
        if (res.next()) {
            try {
                String kd_barang = res.getString("kode").substring(1);
                String AN = "" + (Integer.parseInt(kd_barang) + 1);
                String Nol = "";
                if (AN.length() == 1) {
                    Nol = "000";
                } else if (AN.length() == 2) {
                    Nol = "00";
                } else if (AN.length() == 3) {
                    Nol = "0";
                } else if (AN.length() == 4) {
                    Nol = "";
                } 
                lblnoantrian.setText(Nol + AN);
            } catch (NumberFormatException ex) {
                System.out.println(ex.getMessage());
            }
        } else {
            lblnoantrian.setText("0001");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

当我在第二天运行这个程序时,我看到了像:

这样的错误
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)

这个错误指的是:

String AN = "" + (Integer.parseInt(kd_barang) + 1);
也许任何人都可以帮助我..

1 个答案:

答案 0 :(得分:0)

这不适合使用COALESCE

正如其描述所述

返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。

 mysql> SELECT COALESCE(NULL,1);
      -> 1
 mysql> SELECT COALESCE(NULL,NULL,NULL);
      -> NULL

如果有一个空字符串,那么它的输出将为空字符串检查

SELECT COALESCE (MAX(NULL),0) 
    ->0

SELECT COALESCE (MAX(''),0) 
    ->

SELECT COALESCE ('',0) 
   ->

你可以看到最后两个查询返回空字符串

使用此查询替换您的查询,我希望这将有效

SELECT
  CASE
    WHEN COALESCE (MAX(no_antrian), 0) = '' 
     THEN 0 
    ELSE COALESCE(MAX(no_antrian), 0) 
  END AS kodec  
FROM
  transaksi 
WHERE tg_transaksi = '" + tanggal + "' "