java deleterow()仅适用于可更新的结果集
我将我的语句声明为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();
}
}
# 1 楼答案
如《Oracle数据库JDBC开发人员指南》第章“结果集”第Resultset Limitations and Downgrade Rules节所述:
您当前的查询不符合这些要求(也不符合
TYPE_SCROLL_SENSITIVE
),因此它被降级为不可更新、滚动不敏感的结果集换句话说,您需要将查询更改为
SELECT e.* FROM employees e
或显式列出列。我建议您阅读该部分的其余部分,因为它提供了重要信息