Java 结果集错误

Java 结果集错误,java,oracle11g,Java,Oracle11g,我有这个代码从数据库中的Account表中获取金额 但我得到了一个错误:耗尽了Resultset public int accountAmount(int custID){ int amount=0; try{ Class.forName("oracle.jdbc.driver.OracleDriver"); Connection connection = DriverMa

我有这个代码从数据库中的Account表中获取金额 但我得到了一个错误:耗尽了Resultset

  public int accountAmount(int custID){
        int amount=0;
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection connection =
                    DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl" , "MYATM","myjava123");
            PreparedStatement statment =  connection.prepareStatement("select amount from Account where cust_id=?");
            statment.setInt(1,custID);
            ResultSet resultSet=statment.executeQuery();

            resultSet.next();

            amount= resultSet.getInt("amount");

            statment.close();
            connection.close();

        }
        catch (Exception ex){
            System.out.println(ex.getMessage());

        }


       return  amount;
    }

在读取
resultset
之前,请检查
resultset.next()
是否返回true。希望有帮助:)

检查退货类型;扰流板-这是一个布尔值(如果为false),表示您已通过最后一行。所以,不是这个,

resultSet.next();
amount= resultSet.getInt("amount");
你需要这个

if (resultSet.next()) {
  amount= resultSet.getInt("amount");
}

您的结果集可能为空。尝试在以下情况下使用它以捕获该状态:

 if (rs.next()) {
     amount= resultSet.getInt("amount")
 }
 else {
     // result set is empty, throw an error?
 }

您的查询是否返回任何结果?是的,当我在sqlplus中执行该查询时,它会准确地返回帐户表中的值oops,dupe,got out由@ElliottFrisch回答,在我的java代码中,执行else块意味着我的resultset为空,但当我在cmd中使用sqlplus执行该查询时,它给出了真实的结果,该金额正好在Account表中!!!然后,您可能会调试代码,并验证custID是否正确。