Eu mudaria isso:
statement.executeQuery(rawQuery);
results = statement.getResultSet();
para isso:
results = statement.executeQuery(rawQuery);
O último é certamente a maneira aprovada pela API de fazer isso e, embora eu não possa dizer com certeza que o primeiro seja um problema, certamente parece como se pudesse criar dois conjuntos de resultados separados, dos quais você fecha apenas um.