为什么While(rs.next())语句在第一次迭代后结束?

我正在使用SELECT语句从表中获取数据,然后将其插入到另一个表中。但是,行“ stmt.executeQuery(query);”

从表中插入第一行然后退出。当我注释掉这一行时,while循环遍历所有行,将它们打印出来。stacktrace没有显示任何错误。为什么会这样呢?

try{                

String query = "SELECT * FROM "+schema_name+"."+table;

rs = stmt.executeQuery(query);

while (rs.next()) {

String bundle = rs.getString("BUNDLE");

String project_cd = rs.getString("PROJECT_CD");

String dropper = rs.getString("DROPPER");

String week = rs.getString("WEEK");

String drop_dt = rs.getString("DROP_DT").replace(" 00:00:00.0","");

query = "INSERT INTO INDUCTION_INFO (BUNDLE, PROJECT_CD, DROPPER, WEEK, DROP_DT) "

+ "VALUES ("

+ bundle+","

+ "'"+project_cd+"',"

+ dropper+","

+ week+","

+ "to_date('"+drop_dt+"','YYYY-MM-DD'))";

System.out.println(query);

stmt.executeQuery(query);

}

}catch(Exception e){

e.printStackTrace();

}

回答:

您将重新使用循环最后一行中Statement产生rs的那个。

这将关闭ResultSet

rs。如文档中所述:

ResultSet当对象将自动关闭Statement生成它对象被关闭时,重新执行,或用于检索从多个结果的序列中的下一结果。

您需要使用第二个Statement对象来执行INSERT语句。

以上是 为什么While(rs.next())语句在第一次迭代后结束? 的全部内容, 来源链接: utcz.com/qa/408374.html

回到顶部