10位数字卡号生成 批量生成10位纯纯数字卡号, 卡号不能重复,卡号放在数据库里的有时候批量生成可能 有10万张卡号 有些人可能认为 随机生成10位 然后比较数据库里面是不是已经存在, 要是已经存在那就不能插入数据库了如果要生成10万张卡号,还要比较数据库 这样效率就会更慢,不知道也没有什么好的算法, 生成10位纯数字 不用比较数据库? 谢谢大家回复 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 批量生成是指同一时刻吗用System.currentTimeMillis()取后10位行不行 写一个方法单独生成卡号,取数据库里最后一条数据的卡号然后做 +1 得到此卡号;如果感觉这样不好,那就在数据库里专门存一个最后的卡号字段 cardID(及最大的卡号值存储),这样想得到新的卡号时,取出cardID做 +1;然后在把 carID 的值改为 carID+1的值; 其实:Oracle里面的主键就是这样维护的,所有的表主键,会单独建一张表,维护所有表的主键ID; 数字加1最简单。每次SQL获得MAX(卡号),然后往上面加就行了有一个比较另类的方法,用数据库来判断。把数据库里存储卡号那个表格的“卡号”列设置成UNIQUE,在程序里存储那部分catch异常,如果有相同卡号出现并试图存储,数据库将不允许操作,抛出异常,这时候你再重新生成一个卡号,看能否存储。但这个方法和比对数据库没什么区别,每条都需要访问一次或多次。 补充一点:要是想得到 10万个卡号,那就取出最大的卡号后(最大卡号取法就按上面说的),将其传入到写好的方法里面(这里面可以写for循环 参数两个一个就是 最大卡号值,一个是你要多少个新卡号),然后在得出卡号的最后,不要忘记更改存储最大的卡号值即可。 可以考虑使用oracle的sequences,每次的卡号都由他来生成。可以避免重复。 生成过的都扔到HashSet,新生成的用contains判断一下就行了吧 myeclipse控制台乱码问题 String s = new String("xyz");创建了几个String Object? 求答案 求解释 visitor模式和bridge模式,到底区别在哪里? 有没人知道sun认证考试的事情?? 找不到CLASS的问题 关于Structs的问题? 高手出手,低手举手,没手不要走(Java与C++的一系列区别) 请教:如何将int转换为16进制的byte? 初学java网络编程的问题 Java中如何运行系统命令? 奇怪的system.in.read问题 java版本冲突问题
如果感觉这样不好,那就在数据库里专门存一个最后的卡号字段 cardID(及最大的卡号值存储),这样想得到新的卡号时,取出cardID做 +1;然后在把 carID 的值改为 carID+1的值;
其实:Oracle里面的主键就是这样维护的,所有的表主键,会单独建一张表,维护所有表的主键ID;