user2335123
user2335123

Reputation: 101

java.sql.SQLException: Exhausted Resultset error

I'm facing the problem with this exception java.sql.SQLException: Exhausted Resultset in following code. I'm sure my query returns only one value. Even If I don't use rs.next(); it throws the error java.sql.SQLException: ResultSet.next was not called. Could you please help?

FYI, I'm using the another result set in main where this menthod from another class is called. will it affect?

Thanks

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;

Upvotes: 3

Views: 29493

Answers (4)

Sachindra N. Pandey
Sachindra N. Pandey

Reputation: 1252

I am using Oracle 10g database , i found same error "java.sql.SQLException: Exhausted Resultset error". I just grant permission in database and solved my probblem.

SQL> grant insert,update,delete on "table-name" to "database_name";

Upvotes: 0

Paul
Paul

Reputation: 3058

Try:

returnValue = rs.next() ? rs.getString("display_name") : null;

You don't need to check if the rs is null. It won't be - assuming the executeQuery() returned rather than raising an exception. (Though the returned result set might have 0 rows).

You also don't need to loop over the result set, assuming you really know that you expect back a single row. (Though, given the query, that seems unlikely.)

Upvotes: 1

Karibasappa G C
Karibasappa G C

Reputation: 2732

use by your modification like below

if (rs != null && rs.first()) {
    do {
        returnValue = rs.getString(("display_name");
    } while (rs.next());
}

Upvotes: 0

Jacob
Jacob

Reputation: 14741

Try as

if (rs! = null) { 
 while (rs.next()) {
  returnValue = rs.getString("display_name");
}
......

Upvotes: 5

Related Questions