java - preparestatement - PreparedStatement setNull(..)
preparedstatement java update (4)
Java PreparedStatement proporciona 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);
?
Esta guide dice:
6.1.5 Envío de JDBC NULL como parámetro IN
El método setNull permite que un programador envíe un valor JDBC NULL (un SQL NULL genérico) a la base de datos como un parámetro IN. Sin embargo, tenga en cuenta que todavía debe especificar el tipo JDBC del parámetro.
También se enviará un JDBC NULL a la base de datos cuando se pase un valor nulo de Java a un método setXXX (si toma objetos Java como argumentos). El método setObject, sin embargo, puede tomar un valor nulo solo si se especifica el tipo JDBC.
Entonces sí, son equivalentes.
Finalmente realicé una pequeña prueba y, mientras lo 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 los objetos en ambos sentidos
setNull(..)
y
set<ClassName>(.., null))
comportarse de la misma manera.
También podría considerar el uso de preparedStatement.setObject(index,value,type);
pero ten cuidado con esto ...
Long nullLong = null;
preparedStatement.setLong( nullLong );
-pulsar la excepción del puntero nulo-
porque el prototipo es
setLong( long )
NO
setLong( Long )
agradable para atraparte eh.