В этом проблема:
stmt.close();
conn.close();
Вы закрываете соединение с базой данных. Вы не можете этого сделать, пока не прочитаете данные, иначе как ResultSet
будет читать его? Возможно, он будет читать некоторые данные для начала, но это не значит, что это отключенный объект.
В частности, из документа для ResultSet.close
:
Примечание. Объект ResultSet автоматически закрывается объектом Statement, который сгенерировал его, когда этот объект Statement закрыт, повторно выполняется или используется для извлечения следующего результата из последовательности нескольких результатов.
blockquote>