java实现数据库序号(流水号)
2007-02-07 12:00
330 查看
开发中经常会用到如001,002,或者DOC001,DOC002之类的序号(俗称的流水号)作为主键,实现的方法不难,原理也是取得数据库中最大的记录然后进行加1操作,而取得最大记录的方式应该有两种,一种是从数据库中取得记录集,然后用代码去遍历和判断,不过这种方式感觉不太实际(^-^汗)!而另一种方式是用sql语句直接取出最大的记录!
呵呵!~还是不讲太多废话了,相信这些大家都知道!下面就共享一些主要用第二种方式来实现的源码!
源码:sequencenumber1.0_src.rar
jar包(^_^方便用):sequencenumber1.0.rar
不过只现在只支持mysql,sqlserver,access,oracle等四种数据库(^_^因为偶也只用到这几种数据库)!不过各位程序员们可自行扩展,原开发环境是eclipse3.2 + jdk1.5!
支持的格式有纯数字(如:1、2),字符(如:001、002),序号头 + 序号(如DOC001、DOC002),序号头 + 日期 + 序号(如:DOC20070206001、DOC20070206002)
源码中有测试的例子,如:// test
public static void main(String[] args) throws Exception {
// 不需要数据库支持
SequenceNumber sn = new AccessSequenceNumber();
System.out.println( " general number: " + sn.getGeneralNumber( " DOC " ));
// 需要数据库支持(以下测试部分需要Connection,请先根据数据库类型取得连接对象,再进行测试^-^)
// 测试前先建立表:TEST;字段:TESTID:文本(30)
// 型式:sn = new AccessSequenceNumber(Connection对象)或sn.setConnection(Connection对象);
sn.setConnection(JdbcUtil.getConnection_Access());
// 注:getSequenceNumber_Number方法中如果字段的原始记录存在非数字字符,例:'A12'、'f22',则会抛出字符到数字的转换异常。
// 建议getSequenceNumber_Number与其它方法不要同时测试。
System.out.println( " sequencenumber number: " + sn.getSequenceNumber_Number( " TEST " , " TESTID " ));
System.out.println( " sequencenumber number: " + sn.getSequenceNumber_Number( " TEST " , " TESTID " , 10000 ));
// 测试下面时请最好先注释上面两句代码,否则当数据库存在非纯数字记录时会抛出异常。
// 建议一次只测试一个方法。
// 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();
}
不说太多了,还是自已慢慢看吧!
呵呵!~还是不讲太多废话了,相信这些大家都知道!下面就共享一些主要用第二种方式来实现的源码!
源码:sequencenumber1.0_src.rar
jar包(^_^方便用):sequencenumber1.0.rar
不过只现在只支持mysql,sqlserver,access,oracle等四种数据库(^_^因为偶也只用到这几种数据库)!不过各位程序员们可自行扩展,原开发环境是eclipse3.2 + jdk1.5!
支持的格式有纯数字(如:1、2),字符(如:001、002),序号头 + 序号(如DOC001、DOC002),序号头 + 日期 + 序号(如:DOC20070206001、DOC20070206002)
源码中有测试的例子,如:// test
public static void main(String[] args) throws Exception {
// 不需要数据库支持
SequenceNumber sn = new AccessSequenceNumber();
System.out.println( " general number: " + sn.getGeneralNumber( " DOC " ));
// 需要数据库支持(以下测试部分需要Connection,请先根据数据库类型取得连接对象,再进行测试^-^)
// 测试前先建立表:TEST;字段:TESTID:文本(30)
// 型式:sn = new AccessSequenceNumber(Connection对象)或sn.setConnection(Connection对象);
sn.setConnection(JdbcUtil.getConnection_Access());
// 注:getSequenceNumber_Number方法中如果字段的原始记录存在非数字字符,例:'A12'、'f22',则会抛出字符到数字的转换异常。
// 建议getSequenceNumber_Number与其它方法不要同时测试。
System.out.println( " sequencenumber number: " + sn.getSequenceNumber_Number( " TEST " , " TESTID " ));
System.out.println( " sequencenumber number: " + sn.getSequenceNumber_Number( " TEST " , " TESTID " , 10000 ));
// 测试下面时请最好先注释上面两句代码,否则当数据库存在非纯数字记录时会抛出异常。
// 建议一次只测试一个方法。
// 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();
}
不说太多了,还是自已慢慢看吧!
相关文章推荐
- Java数据库ResultSet转json实现
- mongodb--java连接数据库实现增删改查
- 用java实现excel数据批量导入数据库
- Java使用servlet实现文件上传至数据库和从数据库下载文件
- 使用Java实现数据库编程-Lesson8-DAO模式
- Java使用JDBC连接数据库的实现方法
- Java实现Excel导入数据库,数据库中的数据导入到Excel。。转载 自学资料总结 实现的功能: Java实现Excel导入数据库,如果存在就更新 数据库中的数据导入到Excel 1、
- java excel完整实现导入到数据库的功能开发试题导入功能 整合springmvc mybatis 处理
- java实现的数据库管理类(mysql)
- Java使用SQLServerBulkCopy实现数据库批量操作
- javaweb+struct1.2+mysql实现将数据库中查询得到的list显示到前台
- Java实现数据库连接示例
- 使用JAVA实现高并发无锁数据库操作步骤分享
- 使用纯java jdbc驱动程序实现数据库的连接
- Java实现向数据库中存放和读取图片
- 各种数据库分页及Java实现
- 数据库表到Java类转换工具的实现
- 定时器中实现数据库表数据移动的功能,Exception in thread "Timer-0" isExist java.lang.NullPointerException定时器中线程报错。
- Java实现数据库和数据表的二级联动
- mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?