mysql varchar 自增_Mysql varchar自增ID

该Java程序用于生成MySQL数据库中varchar类型的自增ID。通过查询当前最大值并进行自增,确保每个新ID的独特性。适用于创建员工ID(employeeid)和宠物ID(petid)等场景,支持日期格式的自增ID。
摘要由CSDN通过智能技术生成

import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Date; import utils.DBHelper; public class CreateID { static DBHelper dbHelper = new DBHelper(); Connection conn = dbHelper.getConn();// 获取连接 Statement stmt = null; /** *  *  * @param head *            头部编号 * @param col *            字段名称 * @param tableName *            数据表名称 * @return * @throws Exception */ public String createID(String head, String col, String tableName) throws Exception { stmt = conn.createStatement(); // 获取编号最大值 String sql = "select " + col + " from " + tableName + " order by " + col + " desc limit 0,1"; ResultSet rs = stmt.executeQuery(sql); String value = null;// 课程编号值 ResultSetMetaData metaData = rs.getMetaData(); if (rs.next()) { // 此方法返回列的别名。如果列别名不可用,此方法将返回列名称。 String columnName = metaData.getColumnLabel(1); // 获取到最大的编号值 value = rs.getString(columnName); } if (value == null) { // 如果编号是空,则新增为"KC0001" value = head + "0001"; } else { // 取出后4位流水号 value = value.substring(2, 6); int num = Integer.parseInt(value) + 1;// 实现编号自增 int length = Integer.toString(num).length(); String zero = ""; // 将剩余位数补全为0 for (int i = 0; i < 4 - length; i++) { zero += "0"; } value = head + zero + num;// 返回流水号的数值 } dbHelper.closeConn(); return value; } /** *  * @param head * @param col * @param tableName * @return * @throws Exception */ public String createOrderID(String head, String col, String tableName) throws Exception { stmt = conn.createStatement(); String sql = "select " + col + " from " + tableName + " order by " + col + " desc limit 0,1"; ResultSet rs = stmt.executeQuery(sql); String value = null; String dateNow = new SimpleDateFormat("yyyyMM").format(new Date()); ResultSetMetaData metaData = rs.getMetaData(); if (rs.next()) { metaData.getColumnCount(); String columnName = metaData.getColumnLabel(1); value = rs.getString(columnName); } if (value == null) { value = head + dateNow + "0001"; } else { String date=value.substring(3,9); if (date.equals(dateNow)) { value = value.substring(9, 13); int num = Integer.parseInt(value) + 1; int length = Integer.toString(num).length(); String zero = ""; for (int i = 0; i < 4 - length; i++) { zero += "0"; } value = head + date + zero + num; } else { value = head + dateNow + "0001"; } } dbHelper.closeConn(); return value; } public String createEmpId() throws Exception { return createID("XD", "employeeid", "employeebasicinfo"); } public String createPetId() throws Exception { return createOrderID("Pet", "petid", "petinfo"); } public static void main(String[] args) { try { System.out.println(new CreateID().createPetId()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值