Using Resultset in Java Program

java, jdbc, resultset

Solution

You have to move the cursor of the result set to a row - either by `resultSet.first()` or by `resultSet.next()`. Initially the cursor is pointing before the first row, hence your exception.

When you want to iterate the `ResultSet`:

while(rs.next()) {
    ...
}

Update: For your second problem - (as noted by Casablanca) your query seems to return only one column, and you are asking for a 2nd and 3rd - and they are not found. Note that in `rs.getX(idx)` `idx` is the column, not the row.

Problem

``` Resultset rs=stmt.executeQuery("select count(*) from feedsca group by score order by score"); ``` Using the above java code above, am retrieving the counts of rows from the table named feedsCA. While trying to retrieving the counts using rs.getInt(1),rs.getInt(2),rs.getInt(3), I end with an error saying as below, ``` Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The result set has no current row. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyResultSetHasCurrentRow(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(Unknown Source) at SimpleMail.main(SimpleMail.java:151) ``` UPDATE: The above exception has been resolved. But I get the following exception, for which I dont know the reason. Please advise. ``` Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyValidColumnIndex(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(Unknown Source) at SimpleMail.main(SimpleMail.java:152) ``` This is how I have updated my program. Find me a logical way as I can understand well that the loop below will not work as required. ``` rs=stmt.executeQuery("select count(*) from feedsca group by score order by score"); while(rs.next()){ pw.printf(rowFormat, rs.getLong(1),"0",rs.getLong(2),rs.getLong(3));} ```

Original source