java.lang.reflect.InvocationTargetException

本文介绍了在Java项目中遇到的关于java.sql.Date与java.util.Date类型转换的问题及解决方案。通过将java.sql.Date转换为java.util.Date并处理null值,成功解决了在Web应用中返回JSON数据时出现的java.lang.reflect.InvocationTargetException异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.reflect.InvocationTargetException

开发工具与关键技术:java
作者:彭浩达
撰写时间:2019年 7月 14日

public void selectlyd(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setCharacterEncoding(“utf-8”);
response.setContentType(“text/json”);

	String lyodd = request.getParameter("lyodd");
	PurDrugMed drugMed = crkservice.selectly(lyodd);
	
	JSONObject jsonObject = JSONObject.fromObject(drugMed);
	response.getWriter().write(jsonObject.toString());
	response.getWriter().flush();
	response.getWriter().close();
}

在这里插入图片描述

public PurDrugMed selectly(String lyodd) {
// TODO Auto-generated method stub
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
PurDrugMed drugMed = null;

	try {
		con = DBUtil.getConnection();
		ps = con.prepareStatement(selectly);
		ps.setString(1, lyodd);
		rs = ps.executeQuery();
		while(rs.next()){
			drugMed = new PurDrugMed();
			drugMed.setBuyer(rs.getString("warehousekeeper"));
			drugMed.setDate(rs.getDate("date"));
			drugMed.setPharmacyid(rs.getInt("pharmacyid"));
			drugMed.setMedicineid(rs.getInt("medicineid"));
			drugMed.setRemark(rs.getString("remark"));
			drugMed.setLyodd(rs.getString("lyodd"));
			drugMed.setPurchaseid(rs.getInt("purchaseid"));
		}
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally{
		DBUtil.close(con, ps, rs);
	}
	return drugMed;
}

错误得原因就是这个date,它看起来没什么问题,但获取的值有java中不识别的数据类型。如:java.sql.date,并不是java中的时间类型java.utils.date。
在这里插入图片描述
解决问题的办法是将java.sql.date转为java.utils.date,如:java.utils.date(date);并将null值写成空的字符串[ “” ];
把查询得这句drugMed.setDate(rs.getDate(“date”));
改成drugMed.setDate(new Date(rs.getDate(“date”).getTime()));
那就没问题
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值