2012-10-08 21 views
2

我正在嘗試更新ResultSet中的一行,但它引發了一個錯誤。我通過了常量值ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE來創建語句。如何解決更新滾動敏感結果集期間拋出的錯誤?

這是我的代碼:

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(); 
     } 
    } 

} 

當我執行該代碼塊,下面的堆得到了印刷在控制檯。

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) 

任何人都可以幫助我解決這個錯誤嗎?

+0

任何人都可以幫我修復這個錯誤嗎? ,所以我會在截止日期前提交作業。 – JToddler

回答

相關問題