PreparedStatement setNull (..)

Java PreparedStatement предоставляет возможность явно задать значение Null. Эта возможность:

prepStmt.setNull(parameterIndex, Types.VARCHAR); 

Являются ли семантика этого вызова такими же, как при использовании определенного setType с нулевым параметром?

 prepStmt.setString(null); 

?

В этом руководстве говорится:

6.1.5 Отправка JDBC NULL в качестве параметра IN

Метод setNull позволяет программисту отправить значение NULL JDBC (общее значение NULL) для базы данных в качестве параметра IN. Обратите внимание, однако, что все еще нужно указать тип JDBC параметра.

JDBC NULL также будет отправлен в базу данных, когда значение null Java передается методу setXXX (если в качестве аргументов он принимает объекты Java). Однако метод setObject может принимать нулевое значение, только если указан тип JDBC.

Так что да, они эквивалентны.

но следите за этим ….

 Long nullLong = null; preparedStatement.setLong( nullLong ); 

-отверстие исключения исключений из null-указателя,

потому что

 setLong( long ) 

НЕ

 setLong( Long ) 

хороший, чтобы поймать тебя.

Наконец, я сделал небольшой тест, и, хотя я программировал его, мне пришло в голову, что без метода setNull (..) не было бы способа установить нулевые значения для примитивов Java. Для объектов в обоих направлениях

 setNull(..) 

а также

 set(.., null)) 

вести себя одинаково.

Вы также можете рассмотреть использование preparedStatement.setObject(index,value,type);

Давайте будем гением компьютера.