エラーが発生しますJava.sql.SQLException:Exhausted ResultSet Oracleデータベースに対してクエリを実行します。接続は、Websphereで定義された接続プールを介して行われます。実行されるコードは次のとおりです。
if (rs! = null) (
while (rs.next ()) (
count = rs.getInt (1);
)
)
結果セットにデータが含まれていることに注意してください(rs.next())
ありがとう
結果セットの処理後に列の値にアクセスしようとしたときに、このエラーが発生しました。
if (rs != null) {
while (rs.next()) {
count = rs.getInt(1);
}
count = rs.getInt(1); //this will throw Exhausted resultset
}
これがあなたを助けることを願っています:)
これを試して:
if (rs != null && rs.first()) {
do {
count = rs.getInt(1);
} while (rs.next());
}
結果セットを一番上にリセットすると、rs.absolute(1)
を使用して、結果セットが使い果たされなくなります。
while (rs.next) {
System.out.println(rs.getString(1));
}
rs.absolute(1);
System.out.println(rs.getString(1));
Rs.absolute(1)の代わりにrs.first()を使用することもできます。同じことを行います。
この例外は、ResultSetがwhileループの外側で使用される場合に発生します。 ResultSetに関連するすべての処理をWhileループ内に保持してください。
特定の条件に対してデータベースからレコードが返されない場合、およびrs.getString(1)にアクセスしようとした場合。このエラーは「結果セットを使い果たしました」です。
問題の前、私のコードは:
rs.next();
sNr= rs.getString(1);
修正後:
while (rs.next()) {
sNr = rs.getString(1);
}
これは通常、stmtが再利用されているが別のResultSetを期待している場合に発生し、新しいstmtを作成してexecuteQueryを試行します。それは私のためにそれを修正しました!
エラーの背後にある問題: 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.
ResultSet.next()メソッドの前にresultSetを使用しているため、このエラーが発生しています。
カウントを取得するには、これを使用します:
while(rs.next()) `{count = rs.getInt(1); }
結果が得られます。
Res.getInt(1)がnullでないことを確認してください。 nullになる可能性がある場合は、int count = 0ではなくInteger count = null;を使用します。
Integer count = null;
if (rs! = null) (
while (rs.next ()) (
count = rs.getInt (1);
)
)