ऐसा लगता है कि आप एक नया PreparedStatementबना रहे हैं। ए> प्रत्येक पुनरावृत्ति पर, इसलिए executeBatch()
केवल अंतिम PreparedStatement
. पर लागू होगा वस्तु।
इसके अलावा, PreparedStatement
SQL इंजेक्शन से बचने के लिए उपयोग किया जाता है और जब आप ?
का उपयोग करते हैं तो यह बचने वाले मानों का ख्याल रखता है प्लेसहोल्डर सिस्टम।
addBatch() आप जिस विधि का उपयोग कर रहे हैं वह चर मापदंडों के साथ काम करने के लिए है:
, कच्चे प्रश्नों के साथ नहीं जैसे आपने करने की कोशिश की (उसके लिए, आप addBatch(java.lang.String query)
निम्नलिखित उदाहरण को वही करना चाहिए जो आप चाहते हैं:
String[][] data = { { "first", "data" }, { "second", "data" }, { "third", "data" } };
String sql = "insert into abc(col1,col2) values (?, ?)";// use placeholders
PreparedStatement pst = connection.prepareStatement(sql);// create a single statement
for (String[] row : data) {
// set parameters
pst.setString(1, row[0]);
pst.setString(2, row[1]);
pst.addBatch();// validate the set
}
int[] chkSql = pst.executeBatch(); // execute the batch of commands
//check if chkSql consists of 0..rollback else commit for > 0