• 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调用

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

  • 相关阅读:
    【POJ 3669】Meteor Shower
    【BZOJ 1003】[ZJOI2006]物流运输trans
    【POJ 3662】Telephone Lines
    【UVa 1593】Alignment of Code
    【POJ 3661】Running
    [HNOI2015]开店 简要题解
    trie上构建后缀数组
    [CQOI2017]老C的方块
    [JSOI2018]潜入行动 (树形背包)
    李超线段树 总结
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/5936655.html
Copyright © 2020-2023  润新知