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