2013-04-16 33 views
-3

我写这个代码将照片添加到数据库中,我没有太多的进入Web应用程序 所以请帮我产生JavaAbstractMethod例外

 // obtains input stream of the upload file 
     inputStream = filePart.getInputStream(); 
    } 
    Connection conn = null; // connection to the database 
    String message = null; // message will be sent back to client 
    try { 
     // connects to the database 
     DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 
     conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/opmdb", "root", "sourabh"); 

     // constructs SQL statement 
     String sql = "INSERT INTO photos (userId, photo) values (?, ?)"; 
     PreparedStatement statement = conn.prepareStatement(sql); 
     statement.setString(1, userName); 
     statement.setBinaryStream(2, inputStream); 

这里告诉我也已经错误二手不过的setBlob误差保持不变 异常和堆栈跟踪是

java.lang.AbstractMethodError:com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V 
at org.onlinepicturemanager.addphotoservlet.AddPhotoServlet.doPost(AddPhotoServlet.java:81) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
+0

1)*你的文件长度“所以请大家帮我出” *请找到并使用您的Shift键在适当情况下。在句子开头使用它可以帮助人们阅读文本。也把它放在“我”或“我”的位置。 2)为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 3)将错误或异常输出复制/粘贴为[编辑问题](http://stackoverflow.com/posts/16030814/edit)。 –

回答

0

更改代码statement.setBinaryStream(2, inputStream);

statement.setBinaryStream(2, inputStream,file.length);

“的setBinaryStream”的方法需要3个parameteres,加入这种方法

+0

我正在使用零件filePart = request.getPart(“photo”); –

+0

我在使用Part filePart = request.getPart(“photo”);并且正在通过html表单检索照片。那么我怎么能把file.length放在第三个参数中,或者你可以建议我一个完整的文件上传代码 –

+0

你的'Part'是什么? –