Tôi đang sử dụng câu lệnh SELECT để lấy dữ liệu từ một bảng và sau đó chèn nó vào một bảng khác. Tuy nhiên dòng "stmt.executeQuery (truy vấn);" đang chèn dòng đầu tiên từ bảng rồi thoát. Khi tôi bình luận dòng này ra, vòng lặp while lặp qua tất cả các dòng in chúng ra. Stacktrace không hiển thị bất kỳ lỗi nào. Tại sao chuyện này đang xảy ra?Tại sao câu lệnh While (rs.next()) kết thúc sau lần lặp thứ nhất?
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();
}
Hm ... thực sự tôi không biết nếu gọi 'executeUpdate()' trên một câu lệnh đóng các câu lệnh trước đó 'ResultSet'. Và tôi quá lười để kiểm tra ngay bây giờ ... –
Câu hỏi cụ thể đã được trả lời, nhưng như một quan sát: bạn nên sử dụng một câu lệnh chuẩn bị và thay đổi các biến liên kết mỗi lần thay vì xây dựng một chèn mới với các giá trị hard-coded in (Nó có vẻ giống như một nơi không chắc chắn để có được một SQL injection, nhưng phụ thuộc ai có thể đặt các mục trong bảng nguồn ...). Nhưng tại sao không chỉ làm điều đó trong một hit với một lựa chọn-như-chèn, thay vì looping? –