我使用数据集打算更新表,明明把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();
}
} 谢谢解答
出错信息如下:
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();
}
} 谢谢解答
看看当前登陆soft角色是否对“中文测试表”的 Privileges
其中 Delete=Grantable ?