sql >> Databasteknik >  >> RDS >> Mysql

JDBC-batch med PreparedStatement fungerar inte i MySQL

Det verkar som att du skapar en ny PreparedStatement vid varje iteration, så executeBatch() kommer endast att tillämpas på den sista PreparedStatement objekt.

Dessutom PreparedStatement används för att undvika SQL-injektion och tar hand om värden som läcker ut när du använder ? platshållarsystem.

addBatch() Metoden du använder är avsedd att arbeta med variabla parametrar :

, inte med råa frågor som du försökte göra (för det skulle du använda addBatch(java.lang.String-fråga)

Följande exempel ska göra vad du vill :

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. mysql hitta senaste användarkommentarer

  2. Lagra String Array i MySql via java?

  3. Hitta rader där textmatrisen innehåller värde som liknar indata

  4. Oracle RAC VIP och ARP Primer