Java.sql.SQLException: исчерпанный набор результатов
Я получаю сообщение об ошибке java.sql.SQLException: Исчерпан ResultSet, чтобы запустить запрос к базе данных Oracle. Соединение осуществляется через пул соединений, определенный в Websphere. Выполненный код выглядит следующим образом:
if (rs! = null) (
while (rs.next ()) (
count = rs.getInt (1);
)
)
Замечу, что в наборе результатов содержатся данные (rs.next())
Спасибо
Ответы
Ответ 1
Я видел эту ошибку, пытаясь получить доступ к значению столбца после обработки набора результатов.
if (rs! = null) {
while (rs.next()) {
count = rs.getInt(1);
}
count = rs.getInt(1); //this will throw Exhausted resultset
}
Надеюсь, это поможет вам:)
Ответ 2
Попробуйте следующее:
if (rs != null && rs.first()) {
do {
count = rs.getInt(1);
} while (rs.next());
}
Ответ 3
Если вы reset результирующий набор вершин, используя rs.absolute(1)
, вы не получите exhaused result set.
while (rs.next) {
System.out.println(rs.getString(1));
}
rs.absolute(1);
System.out.println(rs.getString(1));
Вы также можете использовать rs.first() вместо rs.absolute(1), он делает то же самое.
Ответ 4
Когда нет записей, возвращенных из базы данных для определенного условия, и когда я попытался получить доступ к rs.getString(1); Я получил эту ошибку "исчерпанный набор результатов".
Перед выпуском мой код:
rs.next();
sNr= rs.getString(1);
После исправления:
while (rs.next()) {
sNr = rs.getString(1);
}
Ответ 5
Это происходит обычно, когда stmt повторно используется, но ожидает другого ResultSet, попробуйте creting новый stmt и executeQuery. Он исправил это для меня!
Ответ 6
Это исключение возникает, когда ResultSet используется вне цикла while. Пожалуйста, сохраните всю обработку, связанную с ResultSet внутри цикла While.
Ответ 7
Пожалуйста, подтвердите, что res.getInt(1) не является нулевым.
Если он может быть нулевым, используйте Целое число count = null;, а не int count = 0;
Integer count = null;
if (rs! = null) (
while (rs.next ()) (
count = rs.getInt (1);
)
)
Ответ 8
Проблема, лежащая в основе ошибки:. Если вы пытаетесь получить доступ к базе данных 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.