Несколько операторов в одном ResultSet / ResultSet.next (), возвращая false - PullRequest
1 голос
/ 26 июня 2019

Я выбираю данные из двух таблиц с двумя разными запросами. Я использую одно соединение и один набор результатов. Обе таблицы заполнены, но resultset.next () второго запроса возвращает false, хотя оно должно быть истинным.

Я также пытался использовать два разных PreparedStatements и Connections, но у меня ничего не вышло.

DataSource ds = null;
Connection c = null;
PreparedStatement ps = null;
String sql = "SELECT * FROM TABLE1"
String sql2 = "SELECT * FROM TABLE2"

ds = // My datasource
c = ds.getConnection();

ps = c.prepareStatement(sql);
ResultSet resultSet = ps.executeQuery();

while (resultSet.next()) {
    // do smth
    // works
}

ps.close();


ps = c.prepareStatement(sql2);
resultSet = ps.executeQuery();

while (resultSet.next()) {
    // do somth
    // does not work although TABLE2 is populated
}

ps.close();

Таким образом, программа должна перейти ко второму циклу while, поскольку данные возвращаются из запроса sql2. Есть ли у вас какие-либо советы? Спасибо!

1 Ответ

0 голосов
/ 26 июня 2019

Попробуйте закрыть набор результатов перед закрытием подготовленного заявления.

Кроме того, очень хорошая практика использовать try / catch для очистки, если вы получите исключение. См. Должны ли наборы результатов и операторы JDBC закрываться отдельно, хотя впоследствии соединение закрывается?

...