JToddler
JToddler

Reputation: 820

How to fix error thrown during update of scroll sensitive resultset?

I'm trying to update a row in ResultSet, but it is throwing an error. I passed the constant value ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE to createStatement.

this is my code :

public void modifyPrice(float percentage) throws SQLException {
    try {
        con = util.connectdb();
        con.setAutoCommit(false);
        st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE);
        ResultSet rs = st.executeQuery("select * from " + util.dbName
                + ".COFFEES");
        while (rs.next()) {
            float f = rs.getFloat("PRICE");
            rs.updateFloat("PRICE", f * percentage);
            rs.updateRow();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {

        e.printStackTrace();
    } finally {
        if (st != null) {
            st.close();
            con.close();
        }
    }

}

When I executed this code block, the stack below got printed on console.

java.sql.SQLException: Invalid operation for read only resultset: updateFloat
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:197)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:269)
at oracle.jdbc.driver.BaseResultSet.updateFloat(BaseResultSet.java:236)
at oracle.jdbc.driver.OracleResultSet.updateFloat(OracleResultSet.java:677)
at tutorial.ModifyResultSet.modifyPrice(ModifyResultSet.java:29)
at tutorial.ModifyResultSet.main(ModifyResultSet.java:15)

Can anyone help me fix this error?

Upvotes: 2

Views: 273

Answers (1)

O.C.
O.C.

Reputation: 6819

According to these links http://www.coderanch.com/t/301466/JDBC/databases/Invalid-operation-read-only-resultset http://www.coderanch.com/t/295932/JDBC/databases/updateXXX-function-ResultSet

instead of "select * from" you should use "select my_column_name from" statement. See if it makes any difference.

Upvotes: 1

Related Questions