Re: Does PG's JDBC support prepared statements at all? - Mailing list pgsql-jdbc

From Thomas O'Dowd
Subject Re: Does PG's JDBC support prepared statements at all?
Date
Msg-id 20011021113729.V7183@beast.uwillsee.com
Whole thread Raw
In response to Does PG's JDBC support prepared statements at all?  ("Dr. Evil" <drevil@sidereal.kz>)
Responses Re: Does PG's JDBC support prepared statements at all?  (Rene Pijlman <rene@lab.applinet.nl>)
List pgsql-jdbc
On Sat, Oct 20, 2001 at 11:14:22PM -0000, Dr. Evil wrote:
>
> There is a bunch of documentation for prepared statements in PG's
> JDBC, it seems that the only thing prepared statements do is throw
> exceptions.
>
> Here's some code I'm trying:
>
>                 String newvalue = "This is a new value";
>                 int accountnumber = 54;
>                 String qstring = "UPDATE foo SET message = '?' WHERE number = ?";
>         PreparedStatement st = db.prepareStatement(qstring);
>                 st.setString(1, newvalue);
>                 st.setInt(2, accountnumber);
>                 st.execute();
>                 st.clearParameters();
>                 st.close();
>
> and I always get a Parameter index out of range error, which seems
> impossible.  Any idea what's going on?

You shouldn't quote the ? for the string. By calling the setString()
method, it will add the quotes for you. So I guess what is happening is
that the preparedstatement parser ignores quoted question marks and just
finds 1 variable, when you call setstring on 1 it sets the number= part,
and then when you call setInt(2) you are getting the index out of range.
The proper qstring should be:

"UPDATE foo SET message = ? WHERE number = ?"

Cheers,

Tom.
--
Thomas O'Dowd. - Nooping - http://nooper.com
tom@nooper.com - Testing - http://nooper.co.jp/labs

pgsql-jdbc by date:

Previous
From: "Dr. Evil"
Date:
Subject: Does PG's JDBC support prepared statements at all?
Next
From: Gunnar Rønning
Date:
Subject: Re: [PATCHES] Ant configuration