PreparedStatement setString принимает «ноль» (как если бы String a = "null"
), а после .addBatch он превращается в обычный ноль (как если бы String a = null
).
Я не знаю, как это сделатьчтобы обойти эту неверную интерпретацию, так как сразу после того, как все они были добавлены в пакетном режиме, выполняется много строк (оператор sql является INSERT INTO
...) (VarChar не может быть нулевым, но String a = "null"
может бытьпринимается таблицей, если она отправлена без пакета ... вся программа останавливается из-за ошибки msg с сервера)
Сообщение об ошибке: Ошибка при записи данных в базу данных ... org.netezza.error.NzSQLException: ОШИБКА: Столбец 17: Поле не может содержать нулевые значения
Код:
preparedStatement.setString(17, x); //currently x was recieved as "null"
preparedStatement.addBatch() //after other parameters were filled then this statement
preparedStatement.executeBatch(); //after the logs this statement is executed.
Надеюсь, есть быстрое решение для этого
Я использовал этот обход, но думал, что может бытьлучше ... (так как я не могу изменить значение базы данных по умолчанию или манипулировать данными ...)
if(helper.toLowerCase().equals("null"))
helper = (helper.equals("null") ? "null ":"NULL ");
preparedStatement.setString(17, helper);