Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जेडीबीसी बैच रेडीस्टेडमेंट के साथ MySQL में काम नहीं कर रहा है

ऐसा लगता है कि आप एक नया 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. केकेपीएचपी:त्रुटियों के बिना उत्पादन में डीबी स्कीमा परिवर्तन कैसे तैनात करें

  2. पंक्ति दोहराने के लिए रिक्त पंक्ति बनाना

  3. डेटाबेस रिकॉर्ड से बहुस्तरीय मेनू

  4. MySQL में UTF8 वर्णों को संग्रहीत नहीं कर सकता

  5. SQL सर्वर से MySQL डेटा ट्रांसफर