Java PreparedStatement ofrece la posibilidad de establecer explícitamente un valor nulo. Esta posibilidad es:
prepStmt.setNull(parameterIndex, Types.VARCHAR);
¿La semántica de esta llamada es la misma que cuando se usa un setType específico con un parámetro nulo?
prepStmt.setString(null);
?
fuente
pero cuidado con esto ...
Long nullLong = null; preparedStatement.setLong( nullLong );
-tiene una excepción de puntero nulo-
porque el prototipo es
setLong( long )
NO
bueno para atraparte eh.
fuente
Finalmente hice una pequeña prueba y mientras la estaba programando me vino a la mente que sin el método setNull (..) no habría forma de establecer valores nulos para las primitivas de Java. Para objetos en ambos sentidos
y
set<ClassName>(.., null))
comportarse de la misma manera.
fuente
También podría considerar usar
preparedStatement.setObject(index,value,type);
fuente
eso debería funcionar para cualquier tipo. Aunque en algunos casos ocurre una falla en el lado del servidor, como: para SQL:
Oracle 18XE
falla con el tipo incorrecto: esperadoDATE
, obtenidoSTRING
: es una falla perfectamente válida;En pocas palabras: es bueno saber el tipo si llama
.setNull()
fuente