Mik*_*ike 5 java sql oracle resultset while-loop
我使用SELECT语句从表中获取数据,然后将其插入另一个表.但是行"stmt.executeQuery(query);" 从表中插入第一行然后退出.当我注释掉这一行时,while循环遍历打印出来的所有行.堆栈跟踪未显示任何错误.为什么会这样?
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();
}
Run Code Online (Sandbox Code Playgroud)
Statement对象一次只能做一件事,所以当你执行它时INSERT,你ResultSet使它生成的对象无效.您需要创建第二个Statement对象来执行INSERT.
从Statement文档:"默认情况下,每个Statement对象只能同时打开一个ResultSet对象.因此,如果一个ResultSet对象的读取与另一个ResultSet对象的读取交错,则每个对象必须由不同的Statement对象生成如果存在一个开放的对象,则Statement接口中的所有执行方法都会隐式关闭一个语句的当前ResultSet对象."
| 归档时间: |
|
| 查看次数: |
23492 次 |
| 最近记录: |