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