MySQL&JSP java.sql.Date与java.util.Date 的数据库存读问题

我的目标:


实现我的用户的增删查改。

 我的数据库:

    其中还添加了生日:也就是日期

讲述有关日期的问题:


  • 遍历显示的时候(读)

读取 的时候

public List<Student> findAll() {
		List<Student> list = new ArrayList<>();
		Connection conn = DbUtil.getConn();
		String sql = "SELECT * FROM tb_student";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			ResultSet rs = pstmt.executeQuery();
			while(rs.next()){
				list.add(new Student(rs.getInt(1),rs.getString(2),rs.getString(3),
						rs.getString(4),rs.getDate(5),rs.getString(6),rs.getString(7)));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

刚开始的时候一直用:getString() 不知道有getDate方法-----------------------》严肃.jpg学到惹

----------》翻资料还有一些与时间相关的


rs.getDate()-------------------返回日期部分     java.sql.Date   -----------------  2018-18-18

rs.getTime() --------------------返回时间部分     java.sql.Time  -----------------  21:28:18

rs.getTimestamp()-------------返回时间和日期     java.sql.Timestamp-------- 2018-18-18  21:28:18

                         虽然我的Student类里Date是 java.util.Date  但我发现好像没毛病 ==  一样正确的显示到界面上了
 


之后便是添加:

头疼:因为一直无法存进去   setDate(4,stu.getBirth())------因为setDate是sql.Date  而我的stu.getBirth() 一直是util.Date

@Override
	public void addStudent(Student stu) {
		// TODO Auto-generated method stub
		List<Student> list = new ArrayList<>();
		Connection conn = DbUtil.getConn();
		String sql = "INSERT INTO tb_student (sname,gender,tele,birth,hobby,info) VALUES(?,?,?,?,?,?)";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, stu.getSname());
			pstmt.setString(2, stu.getGender());
			pstmt.setString(3, stu.getTele());
			pstmt.setDate(4, new java.sql.Date(stu.getBirth().getTime()));
			pstmt.setString(5, stu.getHobby());
			pstmt.setString(6, stu.getInfo());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

解决办法:

Step 1:

从jsp获取name="birth"的时候就完成过1次转换 :因为 void addStudent(Student stu)  函数传参为Student类

所以 在Servlet层传递它的时候就要完成建立stu对象:获取的日期从String->Date(util.Date)类

birthstr= request.getParamater("birth");
Date birth = new SimpleDateFormat("yyyy-MM-dd").parse(birthstr);

尝试过的人都懂:birth格式   -----   Fri Dec 25 00:00:00 CST 1998     没事!就使用这种Date格式继续new Student

Step 2:

有了stu对象传入了上面那个存数据库得代码(addStudent(stu))中,

stu.getBirth()  获取stu的birth;  虽然是上面那种格式

.getTime()         获取Date(util.Date)的日期!-----成功转换为 1998-12-25

new java.sql.Date(stu.getBirth().getTime())  ---- 转换为Date(sql.Date)

pstmt.setDate(4,new java.sql.Date(stu.getBirth().getTime()) );  放到第四个位置!!!完成!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值