Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 结果集在执行prepared语句时会一直获取空指针,但在调试和单步执行时则不会_Java_Mysql - Fatal编程技术网

Java 结果集在执行prepared语句时会一直获取空指针,但在调试和单步执行时则不会

Java 结果集在执行prepared语句时会一直获取空指针,但在调试和单步执行时则不会,java,mysql,Java,Mysql,您好,我正在运行一个查询MySQL数据库的准备好的语句。我从这个查询中获取了大约500行。当将结果集中的条目映射到我的数据模型对象时,我不断得到一些行元素的随机空指针。但是,如果我在代码执行时调试代码,并单步执行几行,那么数据就会正确映射到数据模型。似乎它正在迅速执行,但我不确定发生了什么。非常感谢任何帮助 prep = con.prepareStatement("SELECT * FROM DAILY_SUMMARY_BY_PLAYER WHERE CLIENT_ID=? AND DATE =

您好,我正在运行一个查询MySQL数据库的准备好的语句。我从这个查询中获取了大约500行。当将结果集中的条目映射到我的数据模型对象时,我不断得到一些行元素的随机空指针。但是,如果我在代码执行时调试代码,并单步执行几行,那么数据就会正确映射到数据模型。似乎它正在迅速执行,但我不确定发生了什么。非常感谢任何帮助

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)?如果是这样的话,那么您可能正在尝试将空值分配给原语,这是行不通的。