-3

为什么我在执行准备好的语句的代码中收到 NullPointerException?

 public ArrayList<BeanStaff> getLeaveStatus(ArrayList<String> name,String date) throws Exception
 {
    ArrayList<BeanStaff> lDetail = new ArrayList();
    String r = name.toString();
    Statement st  = null;
    DateFormat formatter = null;
    Date convertedDate = null;
    formatter = new SimpleDateFormat("dd/MM/yyyy");
    convertedDate = (Date) formatter.parse(date);
    java.sql.Date dt = new java.sql.Date(convertedDate.getTime());

    try {
        PreparedStatement ps = con.prepareStatement("Select Leave_Status from staff_leave_detail join employe on staff_leave_detail.Emp_ID = employe.Emp_ID where Leave_Start_Date=? and Emp_F_Name=?");
        ps.setDate(1,dt);
        ps.setString(2,r);
        ps.addBatch();
        if(r.equals(name.size()))
        {
            ps.executeBatch();
        }
        while(ps.getMoreResults())
        {
            rs  = ps.getResultSet();
        }
        while(rs.next())
        {
            BeanStaff sf = new BeanStaff();
            sf.setLeaveStatus(rs.getString("Leave_Status"));
            lDetail.add(sf);
        }
    }  
    catch (Exception e)
    {
        System.out.println(e);
    }
    finally
    {
        con.close();
        st.close();
    }
    return lDetail;
}
4

1 回答 1

1

你有这个条件:

if(r.equals(name.size()))

这似乎是有问题的,因为您之前初始化r为:

String r = name.toString();

一个 ArrayList 的大小怎么可能等于同一个 ArrayList 的toString()

我相信这种情况总是失败(返回错误)并且你ps.executeBatch()永远不会被调用。

于 2013-08-19T05:08:37.463 回答