Я использую PrepareStatement и BatchUpdate для выполнения запроса UPDATE. В течение цикла я создаю пакет. В конце цикла я выполняю пакет.
Приведенная выше логика работает нормально, если SQL-запрос, используемый в PrepareStatement, не имеет нулевых значений в предложениях WHERE.
Оператор обновления завершается ошибкой, если в классе WHERE есть нулевое значение.
Мой код выглядит примерно так:
connection = getConnection();
PreparedStatement ps = connection.prepareStatement(
"UPDATE TEST_TABLE SET Col1 = true WHERE Col2 = ? AND Col3 = ?");
for (Data aa : InComingData){
if(null == aa.getCol2()){
ps.setNull(1, java.sql.Types.INTEGER);
}
else {
ps.setInteger(1,aa.getCol2())
}
if(null == aa.getCol3()) {
ps.setNull(2, java.sql.Types.INTEGER);
}
else {
ps.setInteger(2,aa.getCol3())
}
ps.addBatch();
}
ps.executeBatch();
connection.commit();
Любая помощь будет оценена.