我使用数据集打算更新表,明明把Statement设成ResultSet.CONCUR_UPDATABLE.返回的出错信息却告诉是"只读结果集" 
出错信息如下: 
Exception in thread "main" java.sql.SQLException: 对只读结果集的无效操作: deleteRow 
  at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:166) 
  at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:217) 
  at oracle.jdbc.driver.BaseResultSet.deleteRow(BaseResultSet.java:645) 
  at test.Test.main(Test.java:16) 测试代码如下: 
12345678910111213141516
 import java.sql.*;
 
public class Test {
    public static void main(String[] args) throws Exception {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection(
                "jdbc:oracle:thin:@IP:1521:orcjava", "soft",
                "soft");
        
        Statement stmt =  conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,  
                ResultSet.CONCUR_UPDATABLE);
        ResultSet rs=stmt.executeQuery("SELECT * FROM 中文测试表 WHERE id=5");
        rs.last();
        rs.deleteRow();
    }
} 谢谢解答 

解决方案 »

  1.   

    程序上看不出有什么问题deleteRow()将请求底层数据库删除当前行
    看看当前登陆soft角色是否对“中文测试表”的 Privileges
    其中 Delete=Grantable ?
      

  2.   

    是的,soft角色拥有DBA权限,不止是delete,包括insert|update都不行,告诉我是只读结果集.
      

  3.   

    在Privileges中给予"DELETE ANY TABLE",仍然不行.给予"SYSOPER"还是不行....崩溃中
      

  4.   

    不明白为什么要这么用啊,直接用delete语句吧,可能跟驱动有关