[英]deleterow() works only for updatable resultset
我宣布我的發言作為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();
}
}
如《 Oracle數據庫JDBC開發人員指南》的“ 結果集 ”一章,“ 結果集 限制和降級規則”部分所述 :
產生可更新的結果集:
[..]
- 查詢不能使用
SELECT *
。
但是,有一種解決方法。[..]
作為
SELECT *
限制的一種解決方法,可以使用表別名,如以下示例所示:SELECT t.* FROM TABLE t ...
您當前的查詢不滿足這些要求(也不滿足TYPE_SCROLL_SENSITIVE
要求),因此將其降級為不可更新的滾動不敏感結果集。
換句話說,您需要將查詢更改為SELECT e.* FROM employees e
或顯式列出這些列。 我建議您閱讀本節的其余部分,因為它提供了重要的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.