java.sql.SQLException:在mysql结果集结束后 [英] java.sql.SQLException: After end of result set in mysql

查看:101
本文介绍了java.sql.SQLException:在mysql结果集结束后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从MYSQL下载图像(.png)文件。
一段时间它工作正常。无法找到确切的问题。
它在Jboss服务器上正常工作。尝试在Apche上的本地计算机上运行时抛出错误。

I am trying to Download image (.png) file from MYSQL. some time it works fine.unable find exact problem. it works properly on Jboss server. throws an error while trying to run in my local machine on Apche.

请帮我修复错误。
这是我的java代码。

Please help me to FIX the error. Here is my java code.

    try {
        conection = SQLUtil.createConnection(Constant.DataSourceName);
        st = conection.prepareStatement("SELECT image FROM TABLE_NAME WHERE Userid="+ getUserId());
        result = st.executeQuery();
        result.next();

        if(!result.next()){
        input = result.getAsciiStream(1);
        }
        FileOutputStream output = new FileOutputStream(getSignatureImageDestinationPath());
        int ch = input.read();
        while (ch != -1) {
            output.write((char) ch);
            ch = input.read();
        }
        output.close();
        input.close();
        result.close();
        SQLUtil.closeConnection(conection);
    } catch (Exception e) {
        System.out.println(e+":Error");
    } finally {
        if (st != null) {
            SQLUtil.closeConnection(conection);
        }
    }

这是堆栈跟踪输出:

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)


推荐答案

您正在呼叫 result.next()两次。我假设您的查询只返回1行,因为您尝试通过 Userid 进行匹配。当调用第二个 result.next()时, ResultSet 中没有要返回的行。这就是抛出 SQLException 的原因。删除第一个 result.next(),如下所示:

You are calling result.next() twice. I'm assuming that your query returns only 1 row since you are trying to match by Userid. When the second result.next() is being called, there is no row to be returned in the ResultSet. This is why an SQLException is being thrown. Remove the 1st result.next() like so:

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

这篇关于java.sql.SQLException:在mysql结果集结束后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆