在登记一个人的时候 要给此人发配一个编号 在未提交的时候 数据库不能有数据 而且编号是字符串 不是自动增长列 当编号10001进来的时候 给它发一个编号
 当编号10002进来的时候 给它发另一个编号   编号不相同 代码控制 可以查数据库如果10001不插入数据 那么10001这个位置就空下来  数据库不能又重复 

解决方案 »

  1.   

    在数据库里面建个sequence,(MSSQLSERVER、DB2、Oracle都支持),初始化之前取得序列号给它。
    没插入sequence反正增上去了给你空着那个值。
      

  2.   

    你取得的那个序列号是唯一的,再把它格式化成字符串,前面后面想要加什么都可以的。
    btw:
    我经常用 select to_char(sysdate,'yyyyMMddHH24MISS')||to_char(seq_unique_id.nextVal,'000000000') from dual <oracle>来取唯一值,效果不错。
      

  3.   

    咋样建立一个sequence啊? 没有听过呀  能具体说说不?  谢谢啦
      

  4.   

    oracle的:
    create SEQUENCE seq_sms_id increment by 1 start with 1 maxvalue 9999999999 cycle;
      

  5.   


    没有接触过这些数据库 我接触了SQLSERVER数据库 所以你说用数据库还是不懂哦
      

  6.   

    哎,我机子上没装sqlserver。但我知道它支持的,你google或百度一下吧~~~
      

  7.   

    不好意思,sql server只有自增列,没有sequence对象。
    搞错了,sorry~~~
      

  8.   

    sqlserver的话  ID设置为自动增长啊 
      

  9.   

    不用sequence对象的话,可以考虑自己建立一张表,记录当前最大编号,每次使用的时候取最大加1
      

  10.   

    public String generateData() {
    Date date = new Date();
    String value = date.getTime();
    return value; }
      

  11.   

    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);
       }
      }
      

  12.   


    长见识了,up。
    但这个串似乎太长了点。不方便格式化。
    btw:弱弱的问一句,连续取几个,不知道能不能看出递增的关系。