java.sql.SQLException:Exhausted Resultset错误

时间:2014-04-22 12:33:52

标签: java sql jdbc resultset

我在以下代码中遇到此异常 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;

4 个答案:

答案 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”;