2010-08-17 113 views
19

我收到錯誤java.sql.SQLException:Exhausted ResultSet對Oracle數據庫運行查詢。該連接通過Websphere中定義的連接池進行。執行的代碼如下:java.sql.SQLException:Exhausted Resultset

  if (rs! = null) (
       while (rs.next()) (
        count = rs.getInt (1); 
       ) 
      ) 

我注意到,結果集包含了數據(rs.next())

感謝

+0

有語句或連接,同時讀取結果集被關閉? – 2010-08-17 11:50:02

+2

@Arne:寧願拋出一個'SQLException:ResultSet被關閉'。 – BalusC 2010-08-17 12:14:09

+7

將來,添加堆棧跟蹤並指向該行。看到接受的答案,它被拋出的行是**絕對不是你在問題中發佈的代碼。你應該練習更多的解釋堆棧跟蹤。我刪除了我的答案。 – BalusC 2010-08-17 12:55:09

回答

29

我已經在處理結果集後嘗試訪問列值時看到此錯誤。

if (rs! = null) { 
    while (rs.next()) { 
    count = rs.getInt(1); 
    } 
    count = rs.getInt(1); //this will throw Exhausted resultset 
} 

希望這將幫助你:)

+0

簡單和明確,謝謝 – 2015-10-20 22:25:33

+0

它會創建其他數據庫(如MySQL,SQL服務器等)相同的例外? – 2016-06-13 06:12:53

+0

我不知道。可能是。我認爲它取決於數據庫供應商:-) – sourcerebels 2016-06-15 07:44:42

4

試試這個:

if (rs != null && rs.first()) { 
    do { 
     count = rs.getInt(1); 
    } while (rs.next()); 
} 
+2

這將失敗,如果結果集只轉發... – 2013-07-17 18:33:10

1

這當語句被重用butexpecting不同的結果集,通常會出現,嘗試creting一個新的語句和的executeQuery。它爲我修好了!

2

如果您將結果集重置爲最高,請使用rs.absolute(1),否則您將無法獲取結果集。

while (rs.next) { 
    System.out.println(rs.getString(1)); 
} 
rs.absolute(1); 
System.out.println(rs.getString(1)); 

你也可以使用rs.first()而不是rs.absolute(1),它也是這樣。

0

請讓sur的res.getInt(1)不爲null。 如果它可以爲空,則使用Integer count = null;而不是int count = 0;

Integer count = null; 
    if (rs! = null) (
        while (rs.next()) (
         count = rs.getInt (1); 
        ) 
       ) 
2

當沒有從數據庫返回特定條件的記錄和當我嘗試訪問rs.getString(1);我得到了這個錯誤「枯竭的結果集」。

的問題之前,我的代碼是:

rs.next(); 
sNr= rs.getString(1); 

修復程序後:

while (rs.next()) { 
    sNr = rs.getString(1); 
} 
1

當ResultSet中使用while循環外發生此異常。請在While循環中保留與ResultSet相關的所有處理。錯誤背後

0

問題:如果您試圖訪問Oracle數據庫您將無法訪問插入的數據,直到該交易已經成功,並且將數據插入後完成你不得不解僱一個commit查詢交易桌子。由於默認情況下Oracle數據庫不處於自動提交模式。

解決方案:

進入SQL PLUS並按照下面的查詢..

SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 28 15:29:43 2017 

Copyright (c) 1982, 2010, Oracle. All rights reserved. 

Enter user-name: scott 
Enter password: 

Connected to: 
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 

SQL> desc empdetails; 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
ENO            NUMBER(38) 
ENAME            VARCHAR2(20) 
SAL            FLOAT(126) 

SQL> insert into empdetails values(1010,'John',45000.00); 

1 row created. 

SQL> commit; 

Commit complete.