Вы не поделились своим Java Exception, и это помогло бы в формулировании точного ответа.
В вашей программе есть два аспекта - ограничения Java и DB.
Для Java пустая строка равна ""
(это двойные кавычки, а не одинарные кавычки), поэтому ваши ссылки на Java - a
, b
& c
имеют это значение, когда значение пустое, я не знаю Не вижу никаких проблем в отношении PreparedStatement
. Вам не нужно беспокоиться о escape-последовательности в одинарных кавычках, если используете PreparedStatement
. Я не уверен, почему вы перечисляете значения как ['foo','','']
, это должно быть ["foo","",""]
.
Второй аспект - то, что столбцы вашей БД a
, b
& c
могут не разрешать пустые значения из-за ограничений, - это совсем другое дело и не может контролироваться с помощью Java-кода. Табличная схема БД должна быть изменена, чтобы разрешить значения по умолчанию в этом случае.
Обсуждение escape-последовательности в одинарных кавычках актуально, когда кто-то готовит SQL-запрос, напрямую добавляя значения в строку запроса, например, "insert into foo (a,b,c) values ('foo','','')";
или предложение WHERE
с a='foo'
. Этот способ не рекомендуется из-за уязвимостей SQL-инъекций.