開(kāi)發(fā)中經(jīng)常會(huì)用到如001,002,或者DOC001,DOC002之類(lèi)的序號(hào)(俗稱(chēng)的流水號(hào))作為主鍵,實(shí)現(xiàn)
的方法不難,原理也是取得數(shù)據(jù)庫(kù)中最大的記錄然后進(jìn)行加1操作,而取得最大記錄的方式應(yīng)該有兩種,一種
是從數(shù)據(jù)庫(kù)中取得記錄集,然后用代碼去遍歷和判斷,不過(guò)這種方式感覺(jué)不太實(shí)際(^-^汗)!而另一種方式是
用sql語(yǔ)句直接取出最大的記錄!
呵呵!~還是不講太多廢話(huà)了,相信這些大家都知道!下面就共享一些主要用第二種方式來(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ù)類(lèi)型取得連接對(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ō)太多了,還是自已慢慢看吧!