sql >> Databáze >  >> RDS >> Mysql

Dávka JDBC s PreparedStatement nefunguje v MySQL

Zdá se, že vytváříte nový PreparedStatement při každé iteraci, takže executeBatch() bude použito pouze na poslední PreparedStatement objekt.

Dále PreparedStatement se používá k zamezení vkládání SQL a stará se o únik hodnot, když použijete ? zástupný systém.

addBatch() metoda, kterou používáte, má pracovat s proměnnými parametry :

, ne s nezpracovanými dotazy, jako jste se pokoušeli udělat (k tomu byste použili addBatch(dotaz java.lang.String)

Následující příklad by měl dělat to, co chcete:

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. Formátujte číslo na 2 desetinná místa

  2. MYSQL Datum Čas Zaokrouhlení na nejbližší hodinu

  3. Uspořádejte uzly TreeView přetažením

  4. Jak mohu zkontrolovat, zda běží MySQL a Tomcat?