|
Feb
04
|
Depending on your jdbc driver version the following code can fail to run.
File file = new File("image.jpg");
InputStream in = new FileInputStream(file);
preparedStatment.setBinaryStream(1, in, file.length());
The error you will see is as follows.
java.lang.AbstractMethodError: com.mysql.jdbc.ServerPreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
To fix this problem you need to change the call to setBinaryStream so the last parameter is passed as an integer instead of a long.
File file = new File("image.jpg");
InputStream in = new FileInputStream(file);
preparedStatment.setBinaryStream(1, in, (int) file.length());



March 3rd, 2010 at 2:08 am
Took me half a day to find your post and solve the problem.
I did see this under tomcat connection pooling:
java.lang.AbstractMethodError: org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
But the cause was the same.
Thanks.
March 3rd, 2010 at 8:04 am
Glad it helped you.
May 31st, 2010 at 3:19 am
that works!
I also get the same type of exception from the connection pool:
java.lang.AbstractMethodError: org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
at first i use:preparedStatment.setBinaryStream(1, inputStream);
then i change that into:preparedStatment.setBinaryStream(1, in, 1000000);
for i don’t know how to get the size of the stream conveniently,i use 1000000 instead.
August 20th, 2010 at 9:27 am
Thankyou
Your tip works. Thankyou very much.
November 18th, 2010 at 9:01 pm
thank you , help much
April 17th, 2011 at 12:25 pm
Gracias me sirvio de mucho y pensar que solo era un simple casteo….