Jag skulle ändra detta:
statement.executeQuery(rawQuery);
results = statement.getResultSet();
till detta:
results = statement.executeQuery(rawQuery);
Det senare är förvisso det API-godkända sättet att göra detta på, och även om jag inte kan säga säkert att det förra är ett problem, verkar det verkligen tyckas som om det skulle kunna skapa två separata resultatuppsättningar, av vilka du bara stänger en.