W metodzie executeQuery usunięto statement.close() bo gdy obiekt Statement jest zamykany jego bieżący obiekt ResultSet (jeżeli istnieje) również jest zamykany.