JSP+JavaBean+Servlet+Oracle新增功能中对Date类型的字段的处理

Oracle库中userinfo表borth字段是Date类型,age年纪字段是int类型。age字段要根据borth来自动计算

先说一下我遇到的问题:

insert into的时候遇到日期转换类型错误

先看一下我的新增用户的实现类:

 1 public boolean addUser(UserInfo user) {
 2         boolean flag=false;
 3         int userno=this.getMaxUserNo();
 4         //System.out.println(userno);
 5         String sql="insert into userinfo(userno,username,name,password,telphone,sex,borth,role," +
 6                 "createdate,createby,age,useraddress)values(?,?,?,?,?," +
 7                 "?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),?,?,?)";
 8         SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 9         Date date =new Date();
10         String createdate = sdf.format(date);
11         String borth=sdf.format(user.getBorth());
12         Object[] params={userno+1,user.getUserName(),user.getName(),user.getPassword(),user.getTelphone(),user.getSex(),borth,
13                 user.getRole(),createdate,user.getCreateBy(),user.getAge(),user.getUseraddress()};
14         for (Object object : params) {
15             System.out.println(object.toString());
16         }
17         System.out.println("addsql=================>"+sql);
18         if(this.getConnection()){
19             int update = this.executeUpdate(sql, params);
20             System.out.println("addsql2222222222=================>"+sql);
21             if(update>0){
22                 System.out.println("新增成功!");
23                 flag=true;
24             }
25         }
26         this.closeConnection();
27         return flag;
28     }

注意红色部分:

这是因为我的实体类userinfo.java中定义的数据库这个borth变量是Date类型的

我把user取到的borth的值转换为字符串,因为sql执行的时候to_date里的占位符?要是字符串,所以我上面直接用

sdf.format(user.getBorth());转了。

2、有一个age字段是要自动通过borth和当前年份进行运算得到年龄大小,我写了一个工具类,到时候servlet直接调用即可
工具类:
 1 package pb.market.com.cn.util;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 
 6 public class GetAge {
 7     public int getage(String borth){
 8         
 9         SimpleDateFormat sdf =new SimpleDateFormat("yyyy");
10         //获取当前年
11         String date =sdf.format(new Date());
12         int day=Integer.parseInt(date);
13         //获取出生日期的年份
14         int bor = Integer.parseInt(borth.substring(0,4));
15         int age=day-bor;
16         return age;
17         
18     }
19 }

servlet调用

总结:中间遇到不少问题,得细心!

原文地址:https://www.cnblogs.com/sincoolvip/p/5936655.html