我声明我的声明为result.concur_update
,但如果我尝试使用deleterow()
,则会显示deleterow()
仅适用于resultset.concur_updatable
的错误。
public static void main(String args[]) throws
ClassNotFoundException,SQLException
{
String driver="oracle.jdbc.OracleDriver";
String url="jdbc:oracle:thin:@localhost:1521:XE";
String user="system"; String pass="sysdb";
Class.forName(driver);
Connection con=DriverManager.getConnection(url,user,pass);
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String query="SELECT * FROM employees";
ResultSet rs=st.executeQuery(query);
System.out.println("S.No\tid\tname");
while(rs.next())
{
System.out.print(rs.getRow()+"\t");
System.out.print(rs.getString(1)+"\t");
System.out.println(rs.getString("emp_name"));
}
rs.absolute(3);
rs.deleteRow();
}
}
答案 0 :(得分:3)
如 Oracle数据库JDBC开发人员指南,结果集一章,Resultset Limitations and Downgrade Rules部分所述:
生成可更新的结果集:
[..]
- 查询无法使用
SELECT *
但是,有一种解决方法。[..]
作为
SELECT *
限制的解决方法,您可以使用表格 别名,如以下示例所示:SELECT t.* FROM TABLE t ...
您当前的查询不符合这些要求(也不符合TYPE_SCROLL_SENSITIVE
的要求),因此会降级为不可更新的滚动不敏感结果集。
换句话说,您需要将查询更改为SELECT e.* FROM employees e
或明确列出列。我建议你阅读该部分的其余部分,因为它提供了重要的信息。