我在以下代码中遇到此异常 java.sql.SQLException:Exhausted Resultset 的问题。我确定我的查询只返回一个值。即使我不使用 rs.next(); ,也会抛出错误 java.sql.SQLException:未调用ResultSet.next 。你能帮忙吗?
仅供参考,我正在使用main中的另一个结果集,其中来自另一个类的menthod被调用。它会影响吗?
由于
public static String getdispname(Connection conn, String resname)
throws SQLException, Exception {
//String resname = "";
String returnValue = "";
String querystring = "";
//Query to select the displayname from resid
querystring += "select distinct display_name";
querystring += " from cust_rally_team_member";
querystring += " where display_name like '%"+ resid +"%'";
// Create select statement
Statement stmt = conn.createStatement();
try {
// Execute statement
ResultSet rs = stmt.executeQuery(querystring);
if (rs!= null) {
while (rs.next()) {
returnValue = rs.getString("display_name");
} catch (SQLException ex) {
throw new SQLException(ex);
} catch (Exception ex) {
throw new Exception(ex);
}
// Close statement
finally {
stmt.close();
}
return returnValue;
答案 0 :(得分:5)
尝试
if (rs! = null) {
while (rs.next()) {
returnValue = rs.getString("display_name");
}
......
答案 1 :(得分:1)
尝试:
returnValue = rs.next() ? rs.getString("display_name") : null;
您无需检查rs
是否为空。它不会 - 假设executeQuery()
返回而不是引发异常。 (尽管返回的结果集可能有0行)。
您也不需要遍历结果集,假设确实知道您希望返回单行。 (虽然,鉴于查询,这似乎不太可能。)
答案 2 :(得分:0)
按照下面的修改使用
if (rs != null && rs.first()) {
do {
returnValue = rs.getString(("display_name");
} while (rs.next());
}
答案 3 :(得分:0)
我使用的是Oracle 10g数据库,我发现了同样的错误“java.sql.SQLException:Exhausted Resultset error”。我只是在数据库中授予权限并解决了我的问题。
SQL>将“table-name”上的insert,update,delete授予“database_name”;