数据库中仅存身份证号通过JavaBean获取生日和年龄

来源:互联网 发布:淘宝店铺打印快递单 编辑:程序博客网 时间:2024/05/16 01:34

最近在做人事管理系统,优化数据库后,想在数据库中只存有身份证号就可以自动显示出生日期和年龄。

JavaBean代码:

private int person;    private String IDNumber;    private Date birthday;//通过身份证号码获取出生日期    private int age;//通过出生日期获取年龄    public String getIDNumber() {        return IDNumber;    }    public void setIDNumber(String iDNumber) {        IDNumber = iDNumber;    }    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {                try {            /*SimpleDateFormat()方法    降字符串类型转换为Date类型*/            /*parse()方法   提取租字符串8-14为出生日期 返回值类型为String*/            this.birthday = new SimpleDateFormat("yyMMdd").parse(this.IDNumber.substring(8, 14));        } catch (ParseException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public int getAge() {        return age;    }    public void setAge(int age) {        Date nowTime = new Date(System.currentTimeMillis());//获取系统当前时间        this.age = nowTime.getYear() - this.birthday.getYear();    }

在做数据查询时只能查询IDNumber,如果查询其他的用getInt(“age”)和getDate(“birthady”)方法数据库系统就会抛出异常

数据库系统就抛出异常

因为数据库字段就没没有出生日期和年龄这两列,所以Result中就不能用get方法获取。

正确做应该是:

public ElderMessage selPseson() {        // TODO Auto-generated method stub        ElderMessage em = null;        String sql = "select * from person;        conn = this.getConnection();        try {            pstmt = conn.prepareStatement(sql);            rs = pstmt.executeQuery();            while (rs.next()){                em = new ElderMessage();                em.setIDNumber(rs.getString("IDNumber"));// 用get方法获取Result中的信息                em.setBirthday(em.getBirthday());//调用JavaBean中的setBirthday()方法初始化出生日期,调用get方法作为getBirthday()方法的引用参数                em.setAge(em.getAge());            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return em;    }

JavaBean不需要和数据库中的字段完全相同,一定情况通过重写set()方法可以让程序富有更大的变化。身份证号不仅仅可以计算出出生日期和年龄,还可以有更多的计算方法,当我用到比较健壮和完善的系统时,可以用这样的方法进行重写,不仅减小了数据库的负担,而且提高了数据灵活性。但计算量增加会影响程序的运速度,在同一体统中考虑JavaBean的应用范围,尽量减少计算次数,提高应用效率:或是在数据库库管理软件中创建视图,在这没有行那方面深入探讨,各路大神是否有更加的解决方案,希望多多留言。

阅读全文
0 0
原创粉丝点击