我有这个代码从我的数据库中的帐户表中获取金额 但我收到此错误:用尽结果集
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;
}
答案 0 :(得分:2)
检查ResultSet#next()的返回类型;剧透 - 它是一个布尔值(如果为false)表示你已经过了最后一行。所以,而不是这个
resultSet.next();
amount= resultSet.getInt("amount");
你需要这个!
if (resultSet.next()) {
amount= resultSet.getInt("amount");
}
答案 1 :(得分:1)
在从resultset
检查resultset.next()
返回true之前,你几乎做对了。希望有所帮助:)
答案 2 :(得分:0)
您的结果集可能是空的。尝试像这样使用它来捕获该状态:
if (rs.next()) {
amount= resultSet.getInt("amount")
}
else {
// result set is empty, throw an error?
}