Java tidak akan mengizinkan Anda menambahkan saja? dalam parameter string pernyataan siap, seperti yang diharapkan dari ? untuk tempat penampung hanya untuk parameter untuk memberikan SQL.
Untuk kasus Anda, Anda mungkin harus memiliki 2 objek pernyataan yang disiapkan, dan dalam pengulangan, Anda dapat membuat keputusan yang mana yang akan dipanggil. Jadi akan seperti di bawah ini:
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();
jika Anda memiliki insert , yang memiliki ketergantungan pada pembaruan, Anda dapat menjalankan batch yang sesuai. Ini akan memastikan bahwa pembaruan akan berfungsi dengan benar. Saya akan berpikir untuk menjalankan insert terlebih dahulu, karena mereka mungkin tidak bergantung pada pembaruan.