Una Statement el objeto solo puede tener un ResultSet activo , por lo que cuando ejecuta rs2 = stmt.executeQuery(sql) , el primer ResultSet (rs ) se cierra.
Crear dos Statement objetos, uno para rs y otro para rs2 .
Citando el javadoc de Statement
: