例如生成"HB201712180005"这类的数据.

大致思路:
- 使用MySQL的存储过程来做;
- 直接通过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
网友评论