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

Java:come eseguire in batch gli inserimenti e gli aggiornamenti del database

Java non ti permetterà di aggiungere solo? nel parametro della stringa preparestatement, poiché si aspetta il ? per il segnaposto solo per i parametri per dare SQL.

Per il tuo caso, potresti dover disporre di 2 oggetti istruzione preparati e, in loop through, puoi decidere quale chiamare. Quindi sarebbe qualcosa come di seguito:

PreparedStatement insertPstmt = connection.prepareStatement("INSERT INTO MY_TABLE VALUES(?,?,?,?)");
PreparedStatement updatePstmt = connection.prepareStatement("UPDATE MY_TABLE, SET MY_VAL=? WHERE MY_VAL IS NULL");

While (<condition>) {
  If (<insert condition>) {
    // use insert pstmt and add batch
  } else {
    // use update pstmt and add batch
  }
}

insertPstmt.executeBatch(); 
updatePstmt.executeBatch();

se hai qualche insert , che ha una dipendenza dall'aggiornamento, potresti eseguire i batch di conseguenza. Ciò assicurerà che l'aggiornamento funzioni correttamente. Penserei di eseguire prima l'inserimento, poiché potrebbero non dipendere dall'aggiornamento.