Java PreparedStatement oferece a possibilidade de definir explicitamente um valor Nulo. Essa possibilidade é:
prepStmt.setNull(parameterIndex, Types.VARCHAR);
A semântica desta chamada é a mesma de quando se usa um setType específico com um parâmetro nulo?
prepStmt.setString(null);
?
fonte
mas cuidado com isso ....
Long nullLong = null; preparedStatement.setLong( nullLong );
-transmite exceção de ponteiro nulo-
porque o protótipo é
setLong( long )
NÃO
bom te pegar eh.
fonte
Por fim, fiz um pequeno teste e, enquanto o estava programando, me veio à mente que, sem o método setNull (..), não haveria como definir valores nulos para os primitivos Java. Para objetos em ambos os sentidos
e
set<ClassName>(.., null))
se comporte da mesma maneira.
fonte
Você também pode considerar usar
preparedStatement.setObject(index,value,type);
fonte
que deve funcionar para qualquer tipo. Embora em alguns casos a falha aconteça no lado do servidor, como: para SQL:
Oracle 18XE
falha com o tipo errado: esperadoDATE
, obtidoSTRING
- essa é uma falha perfeitamente válida;Resumindo: é bom saber o tipo se você ligar
.setNull()
fonte