2013-04-16 80 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'是什麼? –