JAVA循环中的语句执行

JAVA循环中的语句执行,java,oracle,plsql,Java,Oracle,Plsql,我尝试在循环中执行INSERT查询: String selectTableSQL = "SELECT * " + "FROM testTable"; ResultSet rs = stmt.executeQuery(selectTableSQL); while (rs.next()) { String rangeName = rs.getString("RANGENAME"); insertTab

我尝试在循环中执行
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
query并打印
rangeName
,则屏幕上的所有内容都能正常工作(有很多值,而不是只有一个)。因此,问题在于语句执行。我怎样才能解决它


多谢各位

当然有:您使用的是相同的
stmt


创建一个新的
stmt2
变量,并在循环内使用它,而不破坏前一个变量。

当然可以:您使用的是相同的
stmt

创建一个新的
stmt2
变量,并在循环内使用它,而不破坏前一个变量。

首先:不要这样做

} catch (SQLException e) {
           // do nothing             
      }
e.printStackTrace()
添加到catch块

我想你这样做会有例外。您可能需要第二个语句变量。

第一:永远不要这样做

} catch (SQLException e) {
           // do nothing             
      }
e.printStackTrace()
添加到catch块


我想你这样做会有例外。您可能需要第二个语句变量。

+1。考虑使用
PreparedStatement
作为
INSERT
.alfasin,因此我应该在cycle?@user3649515中创建
stmt2
,无论在何处声明它,但是可以在循环中声明和分配它。第二,Axel的good point,使用
PreparedStatement
进行插入。参见这里的示例:+1。考虑使用
PreparedStatement
作为
INSERT
.alfasin,因此我应该在cycle?@user3649515中创建
stmt2
,无论在何处声明它,但是可以在循环中声明和分配它。第二,Axel的good point,使用
PreparedStatement
进行插入。请参阅这里的示例:如果这不是一个虚构的示例,您是否考虑使用TestTabLE2中的“代码>插入”来选择TestTabe<代码> Syym中的RangeNeNm,不,我不能。这仅仅是代码的一部分,如果这不是一个伪造的例子,你是否考虑过使用“代码>插入到TestTabLE2中选择TestTabe<代码> Syym中的RangeNeNe,不,我不能。这只是代码的一部分