2013-05-07 76 views
3

我試圖從MYSQL下載圖像(.png)文件。 有些時候它工作fine.unable找到確切的問題。 它在Jboss服務器上正常工作。拋出一個錯誤,同時試圖在我的本地計算機上運行Apche。java.sql.SQLException:在mysql結果集結束後

請幫我修復錯誤。 這是我的java代碼。

這裏是堆棧跟蹤輸出:

java.sql.SQLException: After end of result set 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) 
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:854) 
at com.mysql.jdbc.ResultSetImpl.getAsciiStream(ResultSetImpl.java:1275) 
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getAsciiStream(DelegatingResultSet.java:253) 
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getAsciiStream(DelegatingResultSet.java:253) 
at com.ninenexus.model.Signature.getSignatureImage(Signature.java:173) 
at com.ninenexus.servlets.SaveMySignature.mySignatureDisplay(SaveMySignature.java:69) 
at com.ninenexus.servlets.SaveMySignature.doPost(SaveMySignature.java:35) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
+1

其中的堆棧跟蹤? – 2013-05-07 11:50:31

+1

什麼是錯誤,特別是當它不起作用時?一定要關閉'finally'塊中的所有資源。另外,你爲什麼使用字符來表示二進制數據? – bdkosher 2013-05-07 11:50:55

+0

Marco Forberg.in cath block – 2013-05-07 11:51:50

回答

7

要調用result.next()兩次。我假設你的查詢只返回1行,因爲你試圖匹配Userid。當調用第二個result.next()時,ResultSet中沒有行要返回。這就是爲什麼一個SQLException被拋出。卸下第一result.next()像這樣:

result = st.executeQuery(); 
if(!result.next()){ 
    input = result.getAsciiStream(1); 
    } 
+0

這還不行嗎?這是說如果不是result.next()。 – DaveH 2013-05-07 12:09:17

+0

無所謂,通話本身會引發異常。 – Aashray 2013-05-07 12:20:46

+0

好的,我可以看到第二個調用會拋出異常。但讓我們說,他將第一個調用移除到'result.next()'。其餘的調用將返回true,這意味着'輸入'變量不會被填充不是嗎? – DaveH 2013-05-07 12:54:47

1

第二result.next移動你過去的結果集的結尾。

我想你想

result = st.executeQuery(); 
if(result.next()){ 
    input = result.getAsciiStream(1); 
} 
+0

1+ for response ... :) – 2013-11-19 19:46:58