У меня проблема с java.sql.ResultSet, у меня есть java.sql.PreparedStatement, для которого я запускаю executeQuery () для возврата ResultSet, когда я пытаюсь получить результаты из получаемого запросаВозникло исключение:
Исключение: java.sql.SQLException Сообщение: операция не разрешена после закрытия ResultSet.
При поиске в Интернете выглядит, что ResultSet может в конечном итоге оказатьсязакрыт по нескольким причинам:
- Объект PreparedStatement, сгенерировавший его, закрыт.
- Объект PreparedStatement, сгенерировавший его, выполняется повторно.
- Объект PreparedStatement, сгенерировавший его, используется для получения следующего результата из последовательности нескольких результатов.
- Закрытие соединения, которое использовалось для генерации PreparedStatement.
Я проверил свой код и ничего из этого не сделал.Ниже приведен фрагмент кода, который вызывает проблему:
PreparedStatement psAccountPartyIdByEmail = null;
....
try {
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
String email = nextLine[0];
.....
try {
if (psAccountPartyIdByEmail == null) {
psAccountPartyIdByEmail = session.connection().prepareStatement(SQL_GET_ACCOUNTPARTYID_BY_EMAILADDRESS);
}
psAccountPartyIdByEmail.setString(1, email);
ResultSet partyIds = psAccountPartyIdByEmail.executeQuery();
while (partyIds.next()) {
String partyId = partyIds.getString(1);
.....
}
} catch (SQLException e) {
Debug.logError(e, "Encountered SQLException while running group service.", MODULE);
}
}
} catch (IOException e) {
Debug.logError(e, "Problem reading line in file", MODULE);
}
Исключение выдается при попытке выполнить: while (partyIds.next()) {
Как я уже говорил, я никогда не закрываю соединение или оператор икак вы можете видеть, я не использую заявление до того, как пытаюсь просмотреть мой результат.
Спасибо за помощь ...
Марк