sql >> Database teknologi >  >> RDS >> Mysql

JDBC-batch med PreparedStatement virker ikke i MySQL

Det ser ud til, at du opretter en ny PreparedStatement a> ved hver iteration, så executeBatch() vil kun blive anvendt på det sidste PreparedStatement objekt.

Desuden PreparedStatement bruges til at undgå SQL-injektion, og det sørger for, at værdier undslipper, når du bruger ? pladsholdersystem.

addBatch() metoden du bruger er beregnet til at arbejde med variable parametre :

, ikke med rå forespørgsler, som du forsøgte at gøre (til det ville du bruge addBatch(java.lang.String-forespørgsel)

Følgende eksempel skal gøre, hvad du vil :

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. Sådan bekræfter du dine MySQL-sikkerhedskopier med ClusterControl

  2. En fejl ved estimering af underforespørgsler

  3. Skaber fremmøde i laravel

  4. eksporter store datatabeldata til .csv-fil i c# windows-applikationer