<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 閱讀(5026) 評(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)航:
     
    主站蜘蛛池模板: 在线观看免费视频资源| 视频一区在线免费观看| 欧美大尺寸SUV免费| 亚洲国产天堂久久综合网站| 无码区日韩特区永久免费系列| 亚洲精品无码永久在线观看你懂的| 免费人成视频在线观看网站| 亚洲AV无码专区国产乱码不卡| 亚洲精品国产字幕久久不卡| 免费精品人在线二线三线区别| aa级女人大片喷水视频免费| 亚洲图片中文字幕| aa级一级天堂片免费观看| 亚洲五月午夜免费在线视频| 亚洲伊人久久大香线蕉啊| 亚洲国产精品人人做人人爽| 国产精品成人免费福利| 国产黄片不卡免费| 亚洲日本在线电影| 亚洲精品天天影视综合网| 亚洲AV无码乱码在线观看性色扶 | 亚洲中文字幕无码久久精品1| 麻豆视频免费观看| 国产精品福利片免费看| 亚洲AV性色在线观看| 亚洲福利视频一区二区三区| 亚洲中久无码不卡永久在线观看| 大地资源在线观看免费高清| 久久免费国产视频| 和老外3p爽粗大免费视频| 亚洲AV无码一区二区三区性色| 亚洲老熟女@TubeumTV| 亚洲日本乱码在线观看| 亚洲免费日韩无码系列| 在线观看国产情趣免费视频| 久久免费99精品国产自在现线| 亚洲人成网站999久久久综合| 亚洲精品电影天堂网| 国产av天堂亚洲国产av天堂| 4338×亚洲全国最大色成网站| 日本黄色免费观看|