मैं तालिका से डेटा प्राप्त करने के लिए एक चयन कथन का उपयोग कर रहा हूं और फिर इसे किसी अन्य तालिका में डालता हूं। हालांकि लाइन "stmt.executeQuery (क्वेरी);" तालिका से पहली पंक्ति डालने के बाद बाहर निकलता है। जब मैं इस लाइन को टिप्पणी करता हूं, तो लूप उन्हें प्रिंट करने वाली सभी पंक्तियों के माध्यम से लूप करता है। Stacktrace कोई त्रुटि नहीं दिखा रहा है। ये क्यों हो रहा है?जबकि पुनरावृत्ति (rs.next()) कथन 1 पुनरावृत्ति के बाद समाप्त हो रहा है?
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();
}
एचएम ... असल में मुझे नहीं पता कि एक कथन पर 'executeUpdate()' को कॉल करने से पहले 'परिणामसेट' को बयान बंद कर दिया गया है। और मैं अभी परीक्षण करने के लिए बहुत आलसी हूं ... –
विशिष्ट प्रश्न का उत्तर पहले से ही दिया गया है, लेकिन एक अवलोकन के रूप में: आपको एक तैयार कथन का उपयोग करना चाहिए और मूल्यों के साथ एक नया सम्मिलन बनाने के बजाय प्रत्येक बार बाध्य चर बदलना चाहिए हार्ड-कोडेड। (यह एक एसक्यूएल इंजेक्शन पाने के लिए एक असंभव जगह की तरह लगता है, लेकिन यह निर्भर करता है कि स्रोत तालिका में कौन प्रविष्टियां डाल सकता है ...)। लेकिन लूपिंग के बजाए, इसे एक हिट में एक चुनिंदा-डालने के साथ क्यों न करें? –