Задать вопрос
@dndred

jdbc — два запроса в одном соединении

Здравствуйте!
Начал изучать Java и уперся в проблему работы с базой данных — не могу выполнить второй sql запрос в одном соединении, имея открытый первый. В документации по JDBC написано, что для этого следует использовать другой экземпляр объекта PreparedStatement, но мне это не помогает — при выполнении второго запроса, недочитанный ResultSet первого закрывается.
                conn = DriverManager.getConnection(
                                strURL + "?lc_ctype=WIN1251",properties);
                PreparedStatement q1 = conn.prepareStatement("select * from params");
                ResultSet r1 = q1.executeQuery();
                PreparedStatement q2 = conn.prepareStatement("select * from clients");
                ResultSet r2 = q2.executeQuery();
                r1.next();//Тут программа вываливается с ошибкой org.firebirdsql.jdbc.FBSQLException: The result set is closed
                r1.getObject(1); 
                r2.next();
                r2.getObject(1);

Полный текст на http://pastebin.com/
Неужели нужно открывать новое соединение на каждый запрос? Или я что-то не так делаю?
Заранее спасибо!
  • Вопрос задан
  • 8225 просмотров
Подписаться 2 Оценить 1 комментарий
Ответ пользователя 1nd1go К ответам на вопрос (7)
@1nd1go
В документации написано, что Statement
By default, only one ResultSet object per Statement object can be open at the same time.

Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects.

All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists
Ответ написан