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