Согласно учебному пособию по JDBC :
resultSet = statement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
// ...
}
ResultSet#next()
перемещает курсор вперед на одну строку от его текущей позиции и возвращает true
, если новая текущая строка действительна. Таким образом, цикл while
автоматически останавливается, когда строк больше нет.
Если предполагается, что вместо нескольких строк будет возвращаться ноль или одна строка, вместо этого используйте if
вместо:
resultSet = statement.executeQuery();
if (resultSet.next()) {
int id = resultSet.getInt("id");
// ...
}
Таким образом, у вас есть возможность добавить else
.
Обновление , в котором говорится и не имеет отношения к реальной проблеме, я вижу больше потенциальных проблем в вашем коде: во-первых, вы, кажется, запускаете несколько запросов, которые зависят друг от друга. Это можно сделать более эффективно. Вы знакомы с SQL Joins ? Во-вторых, разве вы не пропускаете ресурсы JDBC? Похоже, что вы получаете заявление, но не получаете его, чтобы вы могли правильно закрыть его после использования. Пожалуйста, обратитесь к ранее связанному руководству по JDBC для базового объяснения, как правильно работать с кодом JDBC, и этой статье , чтобы найти несколько основных примеров того, как правильно использовать JDBC. В противном случае ваше приложение может рано или поздно аварийно завершить работу, когда в БД закончились ресурсы.