<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    codeslave

    常用鏈接

    統(tǒng)計(jì)

    Link

    最新評(píng)論

    java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào))

    開(kāi)發(fā)中經(jīng)常會(huì)用到如001,002,或者DOC001,DOC002之類的序號(hào)(俗稱的流水號(hào))作為主鍵,實(shí)現(xiàn)
    的方法不難,原理也是取得數(shù)據(jù)庫(kù)中最大的記錄然后進(jìn)行加1操作,而取得最大記錄的方式應(yīng)該有兩種,一種
    是從數(shù)據(jù)庫(kù)中取得記錄集,然后用代碼去遍歷和判斷,不過(guò)這種方式感覺(jué)不太實(shí)際(^-^汗)!而另一種方式是
    用sql語(yǔ)句直接取出最大的記錄!

    呵呵!~還是不講太多廢話了,相信這些大家都知道!下面就共享一些主要用第二種方式來(lái)實(shí)現(xiàn)的源碼!

    源碼:sequencenumber1.0_src.rar

    jar包(^_^方便用):sequencenumber1.0.rar

    不過(guò)只現(xiàn)在只支持mysql,sqlserver,access,oracle等四種數(shù)據(jù)庫(kù)(^_^因?yàn)榕家仓挥玫竭@幾種數(shù)據(jù)庫(kù))!不

    過(guò)各位程序員們可自行擴(kuò)展,原開(kāi)發(fā)環(huán)境是eclipse3.2 + jdk1.5!

    支持的格式有純數(shù)字(如:1、2),字符(如:001、002),序號(hào)頭 + 序號(hào)(如DOC001、DOC002),序號(hào)頭 + 日期 + 序號(hào)(如:DOC20070206001、DOC20070206002)

    源碼中有測(cè)試的例子,如:

    // test
    public   static   void  main(String[] args)  throws  Exception  {
            
    // 不需要數(shù)據(jù)庫(kù)支持
            SequenceNumber sn  =   new  AccessSequenceNumber();
            System.out.println(
    " general number: "   +  sn.getGeneralNumber( " DOC " ));
            
    // 需要數(shù)據(jù)庫(kù)支持(以下測(cè)試部分需要Connection,請(qǐng)先根據(jù)數(shù)據(jù)庫(kù)類型取得連接對(duì)象,再進(jìn)行測(cè)試^-^)
            
    // 測(cè)試前先建立表:TEST;字段:TESTID:文本(30)
            
    // 型式:sn = new AccessSequenceNumber(Connection對(duì)象)或sn.setConnection(Connection對(duì)象);
            sn.setConnection(JdbcUtil.getConnection_Access());
            
    // 注:getSequenceNumber_Number方法中如果字段的原始記錄存在非數(shù)字字符,例:'A12'、'f22',則會(huì)拋出字符到數(shù)字的轉(zhuǎn)換異常。
            
    // 建議getSequenceNumber_Number與其它方法不要同時(shí)測(cè)試。
            System.out.println( " sequencenumber number: "   +  sn.getSequenceNumber_Number( " TEST " " TESTID " ));
            System.out.println(
    " sequencenumber number: "   +  sn.getSequenceNumber_Number( " TEST " " TESTID " 10000 ));
            
    // 測(cè)試下面時(shí)請(qǐng)最好先注釋上面兩句代碼,否則當(dāng)數(shù)據(jù)庫(kù)存在非純數(shù)字記錄時(shí)會(huì)拋出異常。
            
    // 建議一次只測(cè)試一個(gè)方法。
            
    // System.out.println("sequencenumber number:" + sn.getSequenceNumber_String("TEST", "TESTID", null, 6));
            
    // System.out.println("sequencenumber number:" + sn.getSequenceNumber_String("TEST", "TESTID", "DOC", 6));
            
    // System.out.println("sequencenumber number:" + sn.getSequenceNumber_String("TEST", "TESTID", null, 6, 'A'));
            
    // System.out.println("sequencenumber number:" + sn.getSequenceNumber_String("TEST", "TESTID", "DOC", 6, 'A'));
            
    // System.out.println("sequencenumber number:" + sn.getSequenceNumber_Date("TEST", "TESTID", "DOC", 6));
            
    // System.out.println("sequencenumber number:" + sn.getSequenceNumber_Date("TEST", "TESTID", null, 6));
            
    // System.out.println("sequencenumber number:" + sn.getSequenceNumber_Date("TEST", "TESTID", "DOC", 6, 'A'));
            
    // System.out.println("sequencenumber number:" + sn.getSequenceNumber_Date("TEST", "TESTID", null, 6, 'A'));
            sn.close();
        }

    不說(shuō)太多了,還是自已慢慢看吧!

    posted on 2007-02-06 15:51 codeslave 閱讀(5025) 評(píng)論(11)  編輯  收藏 所屬分類: java

    評(píng)論

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2007-02-06 15:53 lxc

    好貼,定了~  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2007-02-06 15:54 lxc

    這次頂兩次了~^_^  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào))[未登錄](méi) 2007-02-06 15:58 leon

    頂頂頂頂頂 頂頂頂頂頂
      頂    頂
      頂   頂頂頂頂頂
      頂   頂 頂 頂
      頂   頂 頂 頂
      頂    頂 頂
     頂頂    頂 頂  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2007-02-07 08:37 匿名

    不考慮事務(wù)的話。你不擔(dān)心主鍵沖突啊。  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2007-02-07 09:32 codeslave

    首先感謝你提出的寶貴意見(jiàn),不過(guò)我未清楚你所講的事務(wù)指的是那個(gè),線程內(nèi)的事務(wù)可用connection來(lái)控制!如果你指的是多用戶并發(fā),那確實(shí)有可能產(chǎn)生主鍵沖突的異常,不過(guò)要解決這個(gè)問(wèn)題不是少少代碼就做到的(但還是可以實(shí)現(xiàn)^-^,如用線程同步,只要緩存序號(hào),那么并發(fā)產(chǎn)生的序號(hào)也不會(huì)相同)!而且并發(fā)性太大的系統(tǒng)也應(yīng)該采用數(shù)據(jù)庫(kù)自動(dòng)生成的序號(hào)或者一些產(chǎn)生唯一編號(hào)的算法,而現(xiàn)在這個(gè)還是可以用在并發(fā)性不大的系統(tǒng)上!  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2007-02-09 12:07 匿名

    嗯。我是說(shuō)多用戶并發(fā)。可能大多數(shù)開(kāi)發(fā),采用自動(dòng)增長(zhǎng)字段作為主鍵吧。或者是sequence來(lái)處理吧。  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2009-01-14 15:34 匿名

    太天真了,完全沒(méi)考慮并發(fā)。  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2009-01-15 09:27 codeslave

    @匿名
    呵呵!想不到還有人關(guān)注這個(gè),里面的確沒(méi)考慮,但可以外部做,如下
    private static Object synO = new Object();

    public void method() {
    synchronized(synO) {
    取得流水號(hào)!
    }
    }  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2009-05-26 17:02 kelli

    頂!!!!  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2009-07-10 10:32 prance

    沒(méi)考慮在負(fù)載均衡情況下的使用  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)數(shù)據(jù)庫(kù)序號(hào)(流水號(hào)) 2009-07-10 12:42 codeslave

    群集...高...這個(gè)我真的沒(méi)辦法!呵呵!有什么好的建議能否分享下?  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 中文字幕在线视频免费观看| 国产真人无遮挡作爱免费视频| 免费观看的毛片大全| 亚洲精品色婷婷在线影院| 精品亚洲成在人线AV无码| 在线观看片免费人成视频无码| 亚洲福利在线播放| 亚洲GV天堂GV无码男同| 91香蕉国产线在线观看免费| 2022中文字字幕久亚洲| 老司机午夜在线视频免费观| 处破痛哭A√18成年片免费| 亚洲一卡二卡三卡四卡无卡麻豆| 国产免费黄色大片| 黄页网站在线免费观看| 久久亚洲春色中文字幕久久久| 三级网站免费观看| 精品久久香蕉国产线看观看亚洲| 亚洲春色在线观看| www视频在线观看免费| 亚洲神级电影国语版| 国产桃色在线成免费视频| 一二三四在线观看免费中文在线观看 | 全部免费国产潢色一级| 午夜视频免费在线观看| 亚洲Av无码专区国产乱码DVD| a级精品九九九大片免费看| 亚洲国产午夜精品理论片在线播放 | 亚洲色偷偷色噜噜狠狠99| 免费网站看v片在线香蕉| 黄色免费网址大全| 亚洲一级在线观看| 久久青青成人亚洲精品| 亚洲av手机在线观看| 一级毛片免费在线观看网站| 亚洲一区二区三区在线观看精品中文| 99精品视频在线观看免费| 偷自拍亚洲视频在线观看99| 亚洲美女高清一区二区三区| 在线视频免费观看www动漫| 国产电影午夜成年免费视频|