Java ne vous permettra pas d'ajouter uniquement ? dans le paramètre de chaîne readystatement, car il attend le ? pour l'espace réservé uniquement pour les paramètres à donner au SQL.
Pour votre cas, vous devrez peut-être avoir 2 objets d'instruction préparés, et en boucle, vous pouvez décider lequel appeler. Ce serait donc quelque chose comme ci-dessous :
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();
si vous avez un insert , qui dépend de la mise à jour, vous pouvez exécuter les lots en conséquence. Cela garantira que la mise à jour fonctionnera correctement. Je penserais à exécuter insert en premier, car ils pourraient ne pas dépendre de la mise à jour.