社区
Java SE
帖子详情
获得一个不相同的编号,不重复
lijiark1988
2009-11-18 10:49:14
在登记一个人的时候 要给此人发配一个编号 在未提交的时候 数据库不能有数据 而且编号是字符串 不是自动增长列
当编号10001进来的时候 给它发一个编号
当编号10002进来的时候 给它发另一个编号 编号不相同 代码控制 可以查数据库
如果10001不插入数据 那么10001这个位置就空下来 数据库不能又重复
...全文
243
24
打赏
收藏
获得一个不相同的编号,不重复
在登记一个人的时候 要给此人发配一个编号 在未提交的时候 数据库不能有数据 而且编号是字符串 不是自动增长列 当编号10001进来的时候 给它发一个编号 当编号10002进来的时候 给它发另一个编号 编号不相同 代码控制 可以查数据库 如果10001不插入数据 那么10001这个位置就空下来 数据库不能又重复
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
heroboy0923
2009-11-19
打赏
举报
回复
jdk1.5以后自带一个uuid的类, 全名是java.util.UUID,UUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成,表现出来的形式例如
550E8400-E29B-11D4-A716-446655440000,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复
代码也很简单
import java.util.UUID;
public class TestUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println (uuid);
}
}
磊磊崔
2009-11-19
打赏
举报
回复
public String generateData() {
Date date = new Date();
String value = date.getTime();
return value;
}
苍蝇①号
2009-11-19
打赏
举报
回复
用java.util.UUID
caryyu
2009-11-19
打赏
举报
回复
按时间 毫秒数 取值
产生随机值
wifewifewife
2009-11-19
打赏
举报
回复
[Quote=引用 5 楼 crazylaa 的回复:]
oracle的:
create SEQUENCE seq_sms_id increment by 1 start with 1 maxvalue 9999999999 cycle;
[/Quote]
是这样的呢.我公司就是用这种方式.感觉这种方式非常好.
wxzyydy
2009-11-19
打赏
举报
回复
ding
bawgiitx
2009-11-19
打赏
举报
回复
实现不行自己字义一个新表{对应表名,标识},添加触发器,每次查询时自动 标识+1
starsong
2009-11-19
打赏
举报
回复
不用sequence对象的话,可以考虑自己建立一张表,记录当前最大编号,每次使用的时候取最大加1
zhouyongyang
2009-11-19
打赏
举报
回复
像我们做项目都是这么做的
zhouyongyang
2009-11-19
打赏
举报
回复
如果楼主不想用自动增长列的话,,,就把ID值设为当前时间(毫秒表示)的前8位就行了,决对不会有重复的
crazylaa
2009-11-19
打赏
举报
回复
[Quote=引用 23 楼 heroboy0923 的回复:]
jdk1.5以后自带一个uuid的类, 全名是java.util.UUID,UUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成,表现出来的形式例如
550E8400-E29B-11D4-A716-446655440000,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复
代码也很简单
import java.util.UUID;
public class TestUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println (uuid);
}
}
[/Quote]
长见识了,up。
但这个串似乎太长了点。。。。不方便格式化。
btw:弱弱的问一句,连续取几个,不知道能不能看出递增的关系。
crazylaa
2009-11-18
打赏
举报
回复
[Quote=引用 12 楼 zl3450341 的回复:]
sqlserver的话 ID设置为自动增长啊
[/Quote]
他要插入前先分配好,可能还要对这个唯一值进行格式化,如前面加字符啥的。。。。
各位还有啥好主意啊我也想知道
老张-AI
2009-11-18
打赏
举报
回复
sqlserver的话 ID设置为自动增长啊
crazylaa
2009-11-18
打赏
举报
回复
不好意思,sql server只有自增列,没有sequence对象。。。。
搞错了,sorry~~~
crazylaa
2009-11-18
打赏
举报
回复
哎,我机子上没装sqlserver。但我知道它支持的,你google或百度一下吧~~~
lijiark1988
2009-11-18
打赏
举报
回复
[Quote=引用 1 楼 crazylaa 的回复:]
在数据库里面建个sequence,(MSSQLSERVER、DB2、Oracle都支持),初始化之前取得序列号给它。
没插入sequence反正增上去了给你空着那个值。
[/Quote]
没有接触过这些数据库 我接触了SQLSERVER数据库 所以你说用数据库还是不懂哦
crazylaa
2009-11-18
打赏
举报
回复
[Quote=引用 7 楼 lijiark1988 的回复:]
不能采用系统时间 要求就必须是像自增一样的 但是又不是主键
单个用户进来还行 多个用户进来就会有重复的编号 利用数据库 不是很会 我只会对数据库就行简单的增删改查
[/Quote]
你用的啥数据库?
lijiark1988
2009-11-18
打赏
举报
回复
不能采用系统时间 要求就必须是像自增一样的 但是又不是主键
单个用户进来还行 多个用户进来就会有重复的编号 利用数据库 不是很会 我只会对数据库就行简单的增删改查
crazylaa
2009-11-18
打赏
举报
回复
[Quote=引用 4 楼 aptweasel 的回复:]
可以做一个单例模式,定义一个静态的全局变量,每次创建对像的时候,这个数字加1即可,然后把参数返回,缺点,服务重起数字从头开始再计,除非在数据库里做一个自动增长的序列或物理文件里有一个地方存贮状态。
[/Quote]
不用数据库的序列很难做到不唯一噢,特别是多客户端的应用。
我试过(系统时间戳+随机6位整数)都有可能重复的,虽然概率小。。
crazylaa
2009-11-18
打赏
举报
回复
oracle的:
create SEQUENCE seq_sms_id increment by 1 start with 1 maxvalue 9999999999 cycle;
加载更多回复(4)
即简单又完美的不
重复
编号
是如何生成的呢?
光阴似箭,岁月如梭。在实际生活中,开发软件,做项目什么滴,都要用到
编号
,单号等等之类。例如飞机有航班号;快递有快递单号,运单号;医院里要用到的住院号;并且这些单号,
编号
都是不能
相同
滴,只能让系统生成。手动输入生成的
编号
,单号有可能存在
重复
不能成功的情况,这里指的是数据库数据较多的情况下。用以前的做法可能有点麻烦 以前的作法是,举个例子:验证码也是随机生成的字符串,虽然不一定不会
重复
,起码跟单号,...
JAVA(生成不
重复
的
编号
)
本次任务完成时间:2019年7月16日 开发工具与关键技术:MyEclipse 10、Java 1、生成不
重复
的
编号
是我在做项目的时候遇到比较多的
一个
需求,其都是要求唯一,没有
重复
的。 2、下面是在JAVA中获取唯一
编号
的方法,这里跟在MVC中的获取方法不一样,但其都是查询出数据库的最后一条数据,然后自动生成唯一的
编号
。 3、在JAVA中生成唯一
编号
的方法比较简单,首先写
一个
查询的方法, 只需要查...
生成8位随机不
重复
的数字
编号
package com.jjinfo.common.util; import java.util.Arrays; import java.util.Random; /** * */ public class RandomNumberGenerator { /**
java生成不
重复
8位数字_如何生成8位随机不
重复
的数字
编号
在Java中难免会使用到生成随机不
重复
的数字
编号
的时候,那么你知道如何生成8位随机不
重复
的数字
编号
吗?下面我们就跟爱站小编一起去看看吧。package com.jjinfo.common.util;import java.util.Arrays;import java.util.Random;/****/public class RandomNumberGenerator {/*** 这是典型的随...
Mysql SQL优化(二) 快速生成5位数不
重复
的
编号
要求:生成
一个
5位数
编号
左边不足用0补齐,这个
编号
不能
重复
,客户可以手动输入
编号
,所有的
编号
都不能有4这个数字以前做项目的时候,生成序列号嘛一是使用UUID二是利用数据库序列三是用数据库总条数+1UUID不和题意,不考虑 MySQL没有序列 需要建表,先放一放 总条数+1 似乎还不错 但是 客户手动输入的
编号
越多 越容易
重复
,容量也越小之前的新司机 在java代码用10W次循环 拼接 0...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章