我的代码是:
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)行导致此异常,但是 当我在我的数据库中运行相同的查询时,它返回了数据。
堆栈跟踪:
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)
答案 0 :(得分:2)
如果语句返回更新计数或者语句的类型不返回Statement.execute()
,则ResultSet
的布尔结果为false。 Javadoc的语言略显模糊。
而不是rset.first()
你需要做什么
if (rset.next())
{
int jidValue = rset.getInt(1); // exception cause
System.out.println("jid is = " + jidValue);
}
rset.first()
仅在移回到不是FORWARD_ONLY
的ResultSet中的第一行时使用。
答案 1 :(得分:0)
我认为这段代码在各方面都是错误的。我读过JDBC tutorial并按照你在其中找到的习语。
答案 2 :(得分:0)
尝试删除rset.first();
行....尝试它可能有用..我从未使用过rset.first();