Как я могу получить предыдущий элемент в наборе результатов? - PullRequest
3 голосов
/ 03 апреля 2011

Предположим, у нас есть этот запрос:

ResultSet result = ("select * from table_name");

Теперь мы можем получить информацию о результате в этой форме

while(result.next())
{
  .
  .
  .
}

но в этой форме мы можем идти вперед. Теперь я хочу знать, возможно ли вернуть этот результат?

Например, мы получаем информацию name='sam', fname='nic'. А в следующий раз я хочу вернуться и снова получить эту информацию.

Возможно ли это?

Ответы [ 2 ]

13 голосов
/ 03 апреля 2011

Да, JDBC поддерживает это. Вам нужен прокручиваемый набор результатов .

Примерно так:

Statement st = conn.createStatement(
   ResultSet.TYPE_SCROLL_INSENSITIVE, 
   ResultSet.CONCUR_READ_ONLY
);
ResultSet rs = st.executeQuery("select * from table_name");

Тогда вы просто используете ResultSet объект rs для перемещения в ваших результатах:

  1. первый
  2. абсолютный
  3. последний
  4. следующий
  5. предыдущий

Методы, которые помогут вам ориентироваться.

2 голосов
/ 03 апреля 2011

Когда вы создаете оператор без передачи ему параметров, по умолчанию используется значение ResultSet.TYPE_FORWARD_ONLY .

Statement st = con.createStatement();

Если вы хотите иметь возможность прокрутки назад, установите для первого параметра значение ResultSet.TYPE_SCROLL_INSENSITIVE или ResultSet.TYPE_SCROLL_SENSITIVE .(Нечувствителен или чувствителен к изменениям в базе данных другими лицами.)

Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

CONCUR_UPDATABLE позволит вам обновить ResultSet, если вы хотите, если вам не нужно, яв этом случае вы устанавливаете CONCUR_READ_ONLY .

Чтение это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...