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

Java - hvordan man batcher databaseindsættelser og opdateringer

Java vil ikke tillade dig at tilføje kun? i forberedt erklæring streng parameter, da det forventer ? for pladsholderen kun for parametrene til at give SQL.

Til din sag skal du muligvis have 2 udarbejdede opgørelsesobjekter, og i loop igennem kan du træffe en beslutning om, hvilken du skal ringe til. Så det ville være noget som nedenfor:

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();

hvis du har en indsættelse, som er afhængig af opdateringen, kan du udføre batchene i overensstemmelse hermed. Dette vil sikre, at opdateringen fungerer korrekt. Jeg ville overveje at udføre insert først, da de måske ikke afhænger af opdatering.



  1. sql ::SQLString adfærd

  2. Bedste måde at nulstille en Oracle-sekvens til den næste værdi i en eksisterende kolonne?

  3. Overførsel af parametre til en JDBC PreparedStatement

  4. Sådan indstilles det aktuelle sprog i SQL Server (T-SQL)