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

时间:2023-03-08 23:30:54
JSP+JavaBean+Servlet+Oracle新增功能中对Date类型的字段的处理

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

先说一下我遇到的问题:

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

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

 public boolean addUser(UserInfo user) {
boolean flag=false;
int userno=this.getMaxUserNo();
//System.out.println(userno);
String sql="insert into userinfo(userno,username,name,password,telphone,sex,borth,role," +
"createdate,createby,age,useraddress)values(?,?,?,?,?," +
"?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),?,?,?)";
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date =new Date();
String createdate = sdf.format(date);
String borth=sdf.format(user.getBorth());
Object[] params={userno+1,user.getUserName(),user.getName(),user.getPassword(),user.getTelphone(),user.getSex(),borth,
user.getRole(),createdate,user.getCreateBy(),user.getAge(),user.getUseraddress()};
for (Object object : params) {
System.out.println(object.toString());
}
System.out.println("addsql=================>"+sql);
if(this.getConnection()){
int update = this.executeUpdate(sql, params);
System.out.println("addsql2222222222=================>"+sql);
if(update>0){
System.out.println("新增成功!");
flag=true;
}
}
this.closeConnection();
return flag;
}

注意红色部分:

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

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

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

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

2、有一个age字段是要自动通过borth和当前年份进行运算得到年龄大小,我写了一个工具类,到时候servlet直接调用即可
工具类:
 package pb.market.com.cn.util;

 import java.text.SimpleDateFormat;
import java.util.Date; public class GetAge {
public int getage(String borth){ SimpleDateFormat sdf =new SimpleDateFormat("yyyy");
//获取当前年
String date =sdf.format(new Date());
int day=Integer.parseInt(date);
//获取出生日期的年份
int bor = Integer.parseInt(borth.substring(0,4));
int age=day-bor;
return age; }
}

servlet调用

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

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