В соответствии с java-документами PreparedStatement.setNull: «Примечание: вы должны указать тип SQL-кода параметра». В чем причина, по которой метод требует тип SQL столбца?Почему для PreparedStatement.setNull требуется sqlType?
Я заметил, что передача java.sql.Types.VARCHAR также работает для столбцов без varchar. Существуют ли сценарии, в которых VARCHAR не подходит (некоторые типы столбцов или некоторые поставщики БД)?
Спасибо.
1. Я все еще не понимаю, почему я должен объявить тип. Насколько я знаю, команда UPDATE с SET MY_COLUMN = NULL будет работать над каждым типом столбца, так почему же этого недостаточно? – MosheElisha
2. У меня есть метод, который получает строку SQL и коллекцию
@user: по отношению к 1; как я уже упоминал, JDBC - это попытка стандартизировать взаимодействие с базой данных, но каждая реализация базы данных имеет свой собственный способ делать вещи. Например, я слышал, что Oracle жалуется, что при установке NULL не задан правильный тип. Следовательно, JDBC требует, чтобы вы указали тип, независимо от того, передает ли базовая реализация JDBC его в базу данных другое. Невозможно помочь, если конкретный протокол проводки базы данных решает, что типы передаются при установке значений NULL, поэтому нет смысла рассуждать об этом. –