Thread: PreparedStatement.setString with null

PreparedStatement.setString with null

From
Tim Penhey
Date:
What is this supposed to do?

    PreparedStatement stat = connection.prepareStatement("update table1
set col1 = ?");
    stat.setString(1, null);

Will this make a null value in the database or an empty string?  Do we
have to use the setNull(1, Types.VARCHAR) in order to get a null value
entered?

Thanks,
Tim


Re: PreparedStatement.setString with null

From
Roland Walter
Date:
Tim Penhey schrieb:

> What is this supposed to do?
>
>    PreparedStatement stat = connection.prepareStatement("update table1
> set col1 = ?");
>    stat.setString(1, null);
>
> Will this make a null value in the database or an empty string?  Do we
> have to use the setNull(1, Types.VARCHAR) in order to get a null value
> entered?

If you want to be portable to different databases, use the setNull() method.

--
Roland Walter
MOSAIC SOFTWARE AG
Telefon: 02225/882-411 Fax: 02225/882-201
http://www.mosaic-ag.com


Re: PreparedStatement.setString with null

From
Oliver Jowett
Date:
Tim Penhey wrote:
> What is this supposed to do?
>
>    PreparedStatement stat = connection.prepareStatement("update table1
> set col1 = ?");
>    stat.setString(1, null);
>
> Will this make a null value in the database or an empty string?  Do we
> have to use the setNull(1, Types.VARCHAR) in order to get a null value
> entered?

The postgresql JDBC driver treats setString(x, null) identically to
setNull(x, Types.VARCHAR). I don't know how portable this behaviour is;
the javadoc is silent on how this case should be handled. You're
probably better off using setNull() explicitly.

-O