簡體   English   中英

deleterow()僅適用於可更新的結果集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM