Java не позволит вам добавлять только? в файле readystatement string, так как он ожидает? для владельца места только для параметров для SQL.
Для вашего случая, возможно, вам придется иметь 2 подготовленных объекта оператора, и в цикле вы можете принять решение, которое нужно вызвать. Так что это будет что-то вроде ниже:
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();
если у вас есть какая-либо вставка, которая имеет зависимость от обновления, вы можете выполнить партии соответственно. Это позволит убедиться, что обновление будет работать правильно. Я бы подумал о том, чтобы выполнить вставку сначала, поскольку они могут не зависеть от обновления.
Нет, Java не разрешает это – Parth
Как насчет написания Хранимые процедуры? –
Это не подготовленное заявление. Это просто заявление. – Boann