Java 结果集在执行prepared语句时会一直获取空指针,但在调试和单步执行时则不会
您好,我正在运行一个查询MySQL数据库的准备好的语句。我从这个查询中获取了大约500行。当将结果集中的条目映射到我的数据模型对象时,我不断得到一些行元素的随机空指针。但是,如果我在代码执行时调试代码,并单步执行几行,那么数据就会正确映射到数据模型。似乎它正在迅速执行,但我不确定发生了什么。非常感谢任何帮助Java 结果集在执行prepared语句时会一直获取空指针,但在调试和单步执行时则不会,java,mysql,Java,Mysql,您好,我正在运行一个查询MySQL数据库的准备好的语句。我从这个查询中获取了大约500行。当将结果集中的条目映射到我的数据模型对象时,我不断得到一些行元素的随机空指针。但是,如果我在代码执行时调试代码,并单步执行几行,那么数据就会正确映射到数据模型。似乎它正在迅速执行,但我不确定发生了什么。非常感谢任何帮助 prep = con.prepareStatement("SELECT * FROM DAILY_SUMMARY_BY_PLAYER WHERE CLIENT_ID=? AND DATE =
prep = con.prepareStatement("SELECT * FROM DAILY_SUMMARY_BY_PLAYER WHERE CLIENT_ID=? AND DATE = ? GROUP BY ACCOUNT_ID ORDER BY NUM_BETS desc");
prep.setInt(1,clientId);
prep.setString(2,dateFrom);
rs = prep.executeQuery();
while(rs.next()){
report = new ReportData();
report.setAccount_id(String.valueOf(rs.getInt("ACCOUNT_ID")));
report.setClient_id(String.valueOf(rs.getInt("CLIENT_ID")));
report.setClient_name(clientService.getClient(rs.getInt("CLIENT_ID")).getClientName());
report.setDate(rs.getString("DATE").substring(0,10));
report.setSite_id(rs.getString("SKIN_ID"));
report.setGame_type(rs.getString("GAME_TYPE"));
report.setGame_version(""+rs.getInt("GAME_VERSION"));
report.setMobile(""+rs.getInt("MOBILE_DESKTOP"));
BigDecimal bd = new BigDecimal(rs.getString("NUM_BETS"));
report.setNum_bets(formatter.format(bd.doubleValue()));
bd = new BigDecimal(rs.getString("PL"));
report.setPl(formatter.format(bd.doubleValue()));
bd = new BigDecimal(rs.getString("RETURNS"));
report.setReturns(formatter.format(bd.doubleValue()));
bd = new BigDecimal(rs.getString("STAKED"));
report.setStaked(formatter.format(bd.doubleValue()));
reportList.add(report);
}
} catch (Exception e) {
logger.error(""+e);
logger.error(""+e.getMessage());
}finally {
try {
if(rs != null){
rs.close();
rs = null;
}
if(prep != null){
prep.close();
prep = null;
}
if(con != null){
con.close();
con = null;
}
} catch (Exception e) {
logger.error(""+e);
logger.error(""+e.getMessage());
}
}
return reportList;
}
哪一行抛出了NPE?您能分享一下您的错误吗?ReportData类字段中是否有一个是原语(例如整数的int insetad)?如果是这样的话,那么您可能正在尝试将空值分配给原语,这是行不通的。