Предположим, есть 10 записей, и я в четвертом значении ResultSet. Возникает ситуация, когда мне нужно принять одно значение пятого ResultSet, снова вернуться к четвертому Resultset. Это возможно в Java?
Вам нужно «прокручивать» ResulSet
экземпляров, чтобы достичь, чтобы прокрутить набор результатов; если вам нужно обновить предыдущие наборы результатов, вам нужны прокручиваемые и обновляемые наборы результатов (в последнем параграфе обсуждаются обновляемые наборы результатов). Обычно ResultSet
s имеют значение TYPE_FORWARD_ONLY
и могут прокручиваться только в прямом направлении с использованием метода next()
.
Вам потребуется создать экземпляр ResultSet
типа TYPE_SCROLL_INSENSITIVE
или TYPE_SCROLL_SENSITIVE
, чтобы вызывать другие методы, такие как absolute()
и previous()
для перемещения назад и вперед ResultSet
.
Для создания прокручиваемого ResultSet
требуется указать тип ResultSet
, возвращаемый объектом Statement
или PreparedStatement
, так как тип по умолчанию - TYPE_FORWARD_ONLY
, как указано ранее. Фрагмент, демонстрирующий, как это сделать, показан ниже:
PreparedStatement pStmt = Connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = pStmt.executeQuery();
...
// You can now invoke rs.previous(), rs.absolute(n) etc. to move back and forth.
Вы хотели бы прочитать о том, как указать тип ResultSet в методах Connection.createStatement
, Connection.prepareStatement
и Connection.prepareCall
.
Если вы хотите изменить содержимое ResultSet
, а не просто прочитать его, вам нужно будет создать «обновляемые» ResultSets. Это легко сделать, указав тип параллелизма ResultSet как CONCUR_UPDATABLE
. Затем вы можете вызвать любой из методов updateXXX
и следовать за ним методом updateRow
для обновления основного источника данных.