Ява. Выполнение выписки в цикле

1

Я пытаюсь выполнить запрос INSERT в цикле:

String selectTableSQL = "SELECT * "
                      + "FROM testTable";

ResultSet rs = stmt.executeQuery(selectTableSQL);

while (rs.next()) {
     String rangeName = rs.getString("RANGENAME");                
     insertTableSQL = "INSERT INTO testTable2 "
                    + "VALUES ('" + rangeName + "')";

      try {
           stmt.executeUpdate(insertTableSQL);
      } catch (SQLException e) {
           // do nothing             
      }

Но после одной итерации этот цикл прерывается. Если я не выполняю запрос INSERT и не печатаю rangeName чтобы rangeName что все работает отлично (существует множество значений, а не только один). Таким образом, проблема заключается в выполнении инструкции. Как я могу это решить?

Большое спасибо!

  • 0
    Если это не надуманный пример, вы рассматривали возможность использования INSERT INTO testTable2 SELECT RANGENAME FROM testTable ?
  • 0
    нет, я не могу Это только часть кода
Теги:
plsql

2 ответа

7
Лучший ответ

Конечно, это так: вы используете ту же самую stmt
Создайте новую переменную stmt2 и используйте ее внутри цикла, не разрушая предыдущую.

  • 0
    +1. И подумайте об использовании PreparedStatement для INSERT .
  • 0
    alfasin, так я должен создать stmt2 в цикле?
Показать ещё 2 комментария
1

Во-первых: никогда не делайте этого

} catch (SQLException e) {
           // do nothing             
      }

Добавьте e.printStackTrace() в блок catch.

Я думаю, вы получите исключение, когда вы это сделаете. Вам может понадобиться вторая переменная оператора.

  • 0
    Йенс, хорошо, большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню