Поведение ResultSet. TYPE_SCROLL_SENSITIVE

Я смущен поведением a ResultSet это имеет тип TYPE_SCROLL_SENSITIVE.

Мое понимание этого:

  1. Я выполняю запрос Select, который возвращает меня набор результатов. Я распечатываю значение конкретного столбца в первой строке.
  2. Я затем выполняюсь Thread.sleep(10000), который останавливает программу в течение 10 секунд.
  3. В то время как программа спит, я вручную делаю обновление того же столбца в DB (посредством подсказки SQL).
  4. После 10 секунд я снова печатаю значение того же столбца в первой строке набора результатов.

На шаге 4 я ожидаю, что печатное значение столбца будет отличаться от значения, распечатанного на шаге 1. Но я всегда получаю то же значение (даже если мой ResultSet имеет тип SCROLL_TYPE_SENSITIVE).

Я неправильно понимаю что-то здесь?

Ниже код, который я использую.

private void doStuff() throws Exception
{
    final String query = "select * from suppliers where sup_id=420";

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

    ResultSet rs = stmt.executeQuery(query);

    rs.next();

    System.out.println("City : " + rs.getString("city"));

    Thread.sleep(10000); // While this executes, I do a manual update !

    System.out.println("City : " + rs.getString("city"));
}
7
задан Mark Rotteveel 14 June 2018 в 07:11
поделиться

1 ответ

Я неправильно понимаю что-то здесь?

Да. Вы должны снова получить, чтобы получить новейшее состояние таблицы, либо выработав Выберите самостоятельно или вызов Resuleset.refreshrow () . Более того, прочитайте документы Resuleset.refreshrow () , прежде чем использовать его, в противном случае вы можете получить неожиданные результаты.

Государства док, касающиеся Type_scroll_sensitive,

type_scroll_sensitive

Константа, указывающая тип для Объект результатов, который прокручивается и вообще чувствителен к изменениям сделано другими.

, что просто означает, что это будет чувствительно к изменениям, сделанным другими в том же объекте результатов. Чтобы понять концепцию, я бы посоветовал посмотреть на этот чиновник Учебное пособие JDBC: Обновление таблиц .

Хорошо, редактирование моего поста, чтобы включить конкретную строку из оригинального учебного пособия,

со прокручиваемой набор результатов, вы можете Перейти к строкам, которые вы хотите изменить, и Если тип имеет тип_scroll_sensitive, Вы можете получить новое значение подряд После того, как вы изменили это.

13
ответ дан 6 December 2019 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: