如何修复java.lang.NullPointerException

时间:2014-11-03 05:23:28

标签: java nullpointerexception

我的java代码在存储过程调用中将参数作为系统当前日期时间和一小时前传递。

Date d = new Date();
Date currentDate = new Date(System.currentTimeMillis() - 3600 * 1000); 
clstmt.setDate("date", new java.sql.Date(currentDate.getTime())); 
clstmt = con.prepareCall("exec vcs_gauge 'vs1_bag', 'd', 'date'"); 

当我运行相应的JSP页面时,会抛出java.lang.NullPointerException

1 个答案:

答案 0 :(得分:3)

首先创建CallableStatement,然后绑定该值。这就是交换你的陈述的顺序,如

// clstmt.setDate("date", new java.sql.Date(currentDate.getTime())); 
clstmt = con.prepareCall("exec vcs_gauge 'vs1_bag', 'd', 'date'"); 
clstmt.setDate("date", new java.sql.Date(currentDate.getTime()));

您获得NullPointerException因为clstmtnull,直到prepareCall()为止。

修改

我认为你的语法应该是

clstmt = con.prepareCall("{call vcs_gauge('vs1_bag', 'd', ?) }"); 
clstmt.setDate(1, new java.sql.Date(currentDate.getTime()));

修改2

根据您的其他详细信息,

String sql = "exec vcs_gauge @gauge_name=?,@first_rec_time=?,@last_rec_time=?";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
clstmt = con.prepareCall(sql); 
clstmt.setString(1, "vs1_bag");
clstmt.setString(2, df.format(d));
clstmt.setString(3, df.format(currentDate));