Java vám nedovolí přidat pouze ? v parametru řetězce readystatement, protože očekává ? pro zástupný symbol pouze pro parametry daného SQL.
Pro váš případ možná budete muset mít 2 připravené objekty příkazů a ve smyčce se můžete rozhodnout, který z nich zavoláte. Takže by to bylo něco jako níže:
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();
pokud máte nějaký insert , který je závislý na aktualizaci, můžete podle toho provést dávky. Tím zajistíte, že aktualizace bude fungovat správně. Nejdříve bych uvažoval o provedení insertu, protože nemusí záviset na aktualizaci.