Обсуждение: blob setBinaryStream
Do you need to create a transaction to set blobs?
con.setAutoCommit(false);
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps = con.prepareStatement("update=
userpreferences set image='?' and time=? where user='?'");
Logger.log("Setting Binary Stream");
ps.setBinaryStream(1, fis, length);
ps.setInt(2, (int)new java.util.Date().getTime());
ps.setString(3, user);
ps.executeUpdate();
ps.close();
fis.close();
con.commit();
con.setAutoCommit(true) ;
When Set Binarystream calls the setInt method, it throws a
SQLExceptionParameter index out of range.
Does anyone know what this could be?
The stack trace I get with this is:
Parameter index out of range.
at
org.postgresql.jdbc2.PreparedStatement.set(PreparedStatement.java:658)
at
org.postgresql.jdbc2.PreparedStatement.setInt(PreparedStatement.java:210)
at
org.opensimpx.server.RequestHandler.storeBackgroundImage(RequestHandler.java:628)
at
org.opensimpx.server.RequestHandler.recieve(RequestHandler.java:597)
at org.opensimpx.server.RequestHandler.run(RequestHandler.java:215)
at java.lang.Thread.run(Thread.java:479)
Any help with this would be greatly appreciated.
Thanks in advanced.
Matt
Matt Fair wrote:
> Do you need to create a transaction to set blobs?
> con.setAutoCommit(false);
> FileInputStream fis = new FileInputStream(file);
> PreparedStatement ps = con.prepareStatement("update=
> userpreferences set image='?' and time=? where user='?'");
> Logger.log("Setting Binary Stream");
> ps.setBinaryStream(1, fis, length);
> ps.setInt(2, (int)new java.util.Date().getTime());
> ps.setString(3, user);
> ps.executeUpdate();
> ps.close();
> fis.close();
> con.commit();
> con.setAutoCommit(true) ;
>
> When Set Binarystream calls the setInt method, it throws a
> SQLExceptionParameter index out of range.
> Does anyone know what this could be?
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>
On Mon, 24 Sep 2001 09:46:49 -0500, you wrote:
> PreparedStatement ps = con.prepareStatement("update=
>userpreferences set image='?' and time=? where user='?'");
I guess the single quotes around the question mark placeholder
are the cause of your problem.
Regards,
René Pijlman <rene@lab.applinet.nl>