Java PreparedStatement umożliwia jawne ustawienie wartości Null. Ta możliwość to:
prepStmt.setNull(parameterIndex, Types.VARCHAR);
Czy semantyka tego wywołania jest taka sama, jak w przypadku użycia określonego setType z parametrem null?
prepStmt.setString(null);
?
java
jdbc
prepared-statement
pawelok
źródło
źródło
ale uważaj na to ....
Long nullLong = null; preparedStatement.setLong( nullLong );
-thows pusty wskaźnik wyjątku-
ponieważ prototypem jest
setLong( long )
NIE
miło cię złapać eh.
źródło
W końcu zrobiłem mały test i podczas programowania przyszło mi do głowy, że bez metody setNull (..) nie byłoby możliwości ustawienia wartości null dla prymitywów Java. Obie strony dla obiektów
i
set<ClassName>(.., null))
zachowywać się w ten sam sposób.
źródło
Możesz również rozważyć użycie
preparedStatement.setObject(index,value,type);
źródło
to powinno działać dla każdego typu. Chociaż w niektórych przypadkach awaria występuje po stronie serwera, na przykład: dla SQL:
Oracle 18XE
kończy się niepowodzeniem z niewłaściwym typem: oczekiwanoDATE
, otrzymanoSTRING
- to jest całkowicie poprawna awaria;Podsumowując: jeśli dzwonisz, dobrze jest znać typ
.setNull()
źródło