Java连接MySQL实现流水号自动增长

例如生成”HB201712180005”这类的数据.
Java连接MySQL实现流水号自动增长_第1张图片

大致思路:

  1. 使用MySQL的存储过程来做;
  2. 直接通过Java处理, MySQL只存储.

现在提供第二种的实现:
里面的日期通过Date类来获取
编码前置0,使用String.format("%04d", num);格式化获取
另外, 需要注意每次程序终止时, 第二次生成时, 需要先获取已有的数据, 可以使用select count(*) from saledetail来得到.

话不多说, 上部分核心代码:

        PreparedStatement pstmt = null;

        String sqlQuery = "select * from saleDetail";
        String sql = "insert into saleDetail(number,name,unitPrice,sum, time, saleman) "
                + "values(?, ?, ?, ?, NOW(), ?)";

        try {
            pstmt = db.getConnection().prepareStatement(sqlQuery);
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                count++;
            }
            // System.out.println("count = " + count);
            pstmt.close();
            rs.close();

            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            // System.out.println(sdf.format(date));
            // System.out.println(sdf.format(date).replaceAll("-", ""));
            // 数据格式化
            String number = String.format("%04d", count);
            pstmt = db.getConnection().prepareStatement(sql);

            pstmt.setString(1, sdf.format(date) + number);
            pstmt.setString(2, name);
            pstmt.setDouble(3, unitPrice);
            pstmt.setInt(4, sum);
            pstmt.setString(5, saleman);

            pstmt.executeUpdate();

如需要完整代码, 下载地址(附建表SQL):
https://github.com/menglanyingfei/Java/blob/master/CodeCollection/JavaSEProjects/JDBCDemo1/JDBCDemo.zip

你可能感兴趣的:(Java小案例)