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