PreparedStatement setNull(..)


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

prepStmt.setNull(parameterIndex, Types.VARCHAR);

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

prepStmt.setString(null);

?

4 70

4 ответа:

этой руководство говорит:

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

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

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

Так что да, они равнозначны.

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

Long nullLong = null;

preparedStatement.setLong( nullLong );

- thows исключение нулевого указателя -

потому что protype-это

setLong( long )   

не

setLong( Long )

приятно было тебя застать.

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

setNull(..)

и

set<ClassName>(.., null)) 

вести себя так же.

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