例如生成”HB201712180005”这类的数据.
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiADNyEzLcd3LcJzLcJzdllmVldWYtl2Q3UCcpJHdz9CX05WZpJ3bt8Gd1F2LcJjcn9WTldWYtl2Pn5GcuQjYyMjZwYGO4gzYxQWZlZTLxEDM3gTOy8CXzV2Zh1WafRWYvxGc19CXvlmL1h2cuFWaq5ycldWYtlWLkF2bsBXdvw1LcpDc0RHaiojIsJye.png)
大致思路:
- 使用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(, sdf.format(date) + number);
pstmt.setString(, name);
pstmt.setDouble(, unitPrice);
pstmt.setInt(, sum);
pstmt.setString(, saleman);
pstmt.executeUpdate();
如需要完整代码, 下载地址(附建表SQL):
https://github.com/menglanyingfei/Java/blob/master/CodeCollection/JavaSEProjects/JDBCDemo1/JDBCDemo.zip