मैं एक PreparedStatement
का उपयोग कर INSERT
कई पंक्तियों हैं: इस बिंदु परgetGeneratedKeys() के बाद PreparedStatement.executeBatch()
ps = con.prepareStatement(query,PreparedStatement.RETURN_GENERATED_KEYS);
for(Element e:listOfElements){
ps.setString(1,this.col_val_1);
ps.setString(2,this.col_val_2);
ps.setInt(3,this.col_val_3);
ps.addBatch();
}
ps.executeBatch();
ResultSet rs = ps.getGeneratedKeys();
, whent मैं पी के एक-INSERT
के लिए उत्पन्न, मैं इस SQLServerException
प्राप्त प्राप्त करने की उम्मीद:
com.microsoft.sqlserver.jdbc.SQLServerException: The statement must be executed before any results can be obtained.
मैं प्रदर्शन प्रत्येक डालने के लिए एक पंक्ति के साथ एक ResultSet मिलने की संभावना है, इसलिए मैं प्रत्येक पी उत्पन्न हो सकता है।
मैं गलत उम्मीद कर रहा हूं? क्या मुझसे कुछ गलत हो रही है? बैच निष्पादन का उपयोग कर इसे अलग तरीके से किया जा सकता है? getGeneratedKeys()
बैच निष्पादन पर के लिए
transaction'ed है किसी भी संयोग से 'INSERT's? –
यदि आप पूछते हैं कि 'INSERT की सफलतापूर्वक निष्पादित की गई है, हाँ। समस्या तब होती है जब मैं अपनी चाबियाँ पुनर्प्राप्त करना चाहता हूं। – jmrodrigg
मेरा मतलब है कि बैच इससे पहले कि आप उत्पन्न कुंजियों को प्राप्त कर सकते हैं 'होना प्रतिबद्ध करने के लिए एड आवश्यकता हो सकती है()' '। –