sql >> Database >  >> RDS >> Mysql

Java - hoe u database-inserts en updates batchgewijs kunt maken

Java staat niet toe dat u alleen ? in de tekenreeksparameter voorbereidstatement, zoals het de ? voor de tijdelijke aanduiding alleen voor de parameters om de SQL te geven.

Voor jouw geval moet je misschien 2 voorbereide statement-objecten hebben, en in een doorlus kun je een beslissing nemen welke je wilt aanroepen. Het zou dus zoiets zijn als hieronder:

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

als je een insert hebt, die afhankelijk is van de update, kun je de batches dienovereenkomstig uitvoeren. Dit zorgt ervoor dat de update correct werkt. Ik zou overwegen om eerst insert uit te voeren, omdat ze mogelijk niet afhankelijk zijn van de update.



  1. Is er een manier om meer dan één query per string uit te voeren in MySQL-Python?

  2. Op functies gebaseerde indexen in SQL Server

  3. Generate_series in Postgres vanaf begin- en einddatum in een tabel

  4. Records tussen 2 datums ophalen in MySQL