Re: BUG #6292: java.sql.PreparedStatement.setNull() throws PSQLException

From: Kris Jurka <books(at)ejurka(dot)com>
To: David Pinheiro <davidsantospinheiro(at)gmail(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: BUG #6292: java.sql.PreparedStatement.setNull() throws PSQLException
Date: 2011-11-16 21:38:46
Message-ID: alpine.BSO.2.00.1111161635310.14447@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-jdbc

On Mon, 14 Nov 2011, David Pinheiro wrote:

>
> Bug reference: 6292
> PostgreSQL version: 8.4
> Description: java.sql.PreparedStatement.setNull() throws
> PSQLException
> Details:
>
> I'm trying to make:
> java.sql.PreparedStatement.setNull(1,java.sql.Types.NULL);
>
> org.postgresql.util.PSQLException: ERROR: column "number_column" is of type
> integer but expression is of type character varying
> Hint: You will need to rewrite or cast the expression.
>
>
> My code is something like:
> if (String.valueOf(input_field) == "null"){
> statement.setNull(1, java.sql.Types.NULL);
> } else {
> statement.setObject(1, valor);
> }
> statement.executeUpdate();
>

I don't think your problem is with setNull, I think your problem is
actually with the setObject branch of your if statement. If the
valor variable is a String, the JDBC driver is assigning it a string
type. You may want to do setObject(1, valor, Types.INTEGER) or
convert it prior to doing the setObject call to an appropriate
numeric type.

Kris Jurka

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Robert Haas 2011-11-17 04:43:14 Re: BUG #6296: High level backend-write activity on db
Previous Message Kris Jurka 2011-11-16 21:29:36 Re: BUG #6293: JDBC driver performance

Browse pgsql-jdbc by date

  From Date Subject
Next Message Anish Kejariwal 2011-11-16 21:42:40 Re: avoid prepared statements on complex queries?
Previous Message Bruno Harbulot 2011-11-16 21:31:11 Re: SSL patch