Я не соглашаюсь с tuinstoel. Важный вопрос состоит в том, обеспечивает ли функциональный язык более быстрое время разработки и приводит к более быстрому коду, когда он привык к тому, какие функциональные языки были предназначены, чтобы использоваться. Посмотрите раздел проблем эффективности по Википедии для проблеска того, что я имею в виду.
Ой, это одна из самых неприятных ошибок при использовании JDBC, которые я видел. Вам следует заменить
st = connection.createStatement(
ResultSet.CONCUR_READ_ONLY,
ResultSet.TYPE_FORWARD_ONLY
);
на
st = connection.createStatement(
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY
);
. Может быть, просто
st = connection.createStatement();
тоже подойдет (поскольку вы выполнили другие критерии для курсора).
Здесь приведены рекомендации по обеспечению фактического получения набора результатов с помощью курсора. Кажется, вы нашли все известные в своем коде, но вы не указали оператор, поэтому он может быть несколько соединен точками с запятой (маловероятно, судя по виду вашего кода). Вы должны использовать протокол V3 (версия 7.4 или новее). Применимо ли все это к вашему делу?