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
[EMAIL PROTECTED] - Testing - http://nooper.co.jp/labs

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to