Я использую PrepareStatement и BatchUpdate для выполнения запроса UPDATE. В цикле for я создаю пакет. В конце цикла я выполняю пакет.PreparedStatement и 'null' значение в выражении WHERE
Над логикой работает отлично, если SQL-запрос, используемый в PrepareStatement, не имеет нулевых значений в WHERE claues.
Заявление об обновлении выходит из строя, если в классе 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();
Любая помощь будет оценена.
Спасибо за respone. Но какие изменения я должен сделать, чтобы заставить его работать? – bond
Хорошо, постройте свой SQL-запрос динамически в зависимости от нулевой аргументации. –