PreparedStatement SetNull(..)


Java PreparedStatement proporciona la posibilidad de establecer explícitamente un valor Null. 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 null?

prepStmt.setString(null);

?

Author: rogerdpack, 2009-08-31

4 answers

Esta guía dice:

6.1.5 Envío de JDBC NULL como un parámetro IN

El método SetNull permite a un programador enviar un valor JDBC NULL (un valor genérico SQL NULL) a la base de datos como un parámetro IN. Tenga en cuenta, sin embargo, que todavía se debe especificar el tipo JDBC del parámetro.

También se enviará un NULL JDBC a la base de datos cuando se pase un valor null Java a un método setXXX (si toma objetos Java como argumentos). El método setObject, sin embargo, puede tomar un valor null solo si se especifica el tipo JDBC.

Así que sí son equivalentes.

 60
Author: djna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-13 16:24:14

Pero ten cuidado con esto....

Long nullLong = null;

preparedStatement.setLong( nullLong );

- thows null pointer exception -

Porque el protype es

setLong( long )   

NO

setLong( Long )

Bueno que te pille fuera eh.

 64
Author: Owen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-25 03:31:26

Finalmente hice una pequeña prueba y mientras lo estaba programando me vino a la mente, que sin el SetNull(..) método no habría forma de establecer valores nulos para las primitivas de Java. Para Objetos en ambos sentidos

setNull(..)

Y

set<ClassName>(.., null)) 

Se comportan de la misma manera.

 13
Author: paweloque,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-01 11:16:36

También podrías considerar usar preparedStatement.setObject(index,value,type);

 4
Author: bithom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-24 06:25:14