簡體   English   中英

SQLException:耗盡的結果集oracle11g

[英]SQLException: Exhausted Resultset oracle11g

我的代碼是:

        Statement testSt = null;
        ResultSet rset = null;
        String query = "select jid FROM playjdbc WHERE jid=56";
        try {
            testSt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);

            if (!testSt.execute(query)) {
                System.out.println("jid doesnt exist!");
            } else {

                rset = testSt.getResultSet();
                rset.first();
                int jidValue = rset.getInt(1); // exception cause
                System.out.println("jid is = " + jidValue);

            }

        }

rset.getInt(1)行導致此異常,但是當我在數據庫中運行相同的查詢時,它返回了data。

堆棧跟蹤 :

java.sql.SQLException: Exhausted Resultset
    at oracle.jdbc.driver.ScrollableResultSet.getOracleObject(ScrollableResultSet.java:623)
    at oracle.jdbc.driver.ScrollableResultSet.getInt(ScrollableResultSet.java:776)
    at oracle.jdbc.driver.UpdatableResultSet.getInt(UpdatableResultSet.java:666)

如果該語句返回更新計數,或者該語句的類型不返回ResultSet ,則Statement.execute()的布爾結果為false。 Javadoc的語言略有歧義。

代替rset.first()您需要做

if (rset.next())
{
    int jidValue = rset.getInt(1); // exception cause
    System.out.println("jid is = " + jidValue);
}

僅當移回不是FORWARD_ONLY的ResultSet中的第一行時才使用rset.first()

我認為這段代碼在所有方面都是錯誤的。 我將閱讀JDBC教程並按照您在其中找到的慣用語進行學習。

只需嘗試刪除rset.first(); 行....嘗試它可能會工作..我從來沒有使用過rset.first();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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