当前位置: 首页 > 面试题库 >

java.sql.SQLException:在mysql中结果集结束后

洪浩波
2023-03-14
问题内容

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

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

    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抛出an的原因。result.next()像这样删除第一个:

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


 类似资料:
  • 问题内容: 我正在尝试在MySQL中编写一个存储过程,该存储过程将执行一个稍微简单的选择查询,然后循环遍历结果,以便决定是执行其他查询,数据转换还是完全丢弃数据。有效地,我想实现这一点: 只有,我只希望在MySQL中使用它,因此可以将其称为过程。我知道对于触发器来说,有语法,但是找不到在语法之外使用的类似内容。我已经阅读了MySQL中的一些循环机制,但到目前为止,我所能想象的就是我将实现以下内容:

  • 我有这样的代码 我试图与kategorikode_kategori,但出现错误,请帮助我

  • 问题内容: 我正在尝试以下查询: 那是三个查询卡在一起,有点儿。但是,返回的结果集将反映查询3的结果,而不是查询1的结果。 有什么方法可以对它们进行优先级排序,以使查询#1的结果全部相同,查询#2的结果全部相同,然后查询#3的结果全部相同?我现在还不想在PHP中执行此操作(更不用说必须控制在第一个查询中显示的结果而不在第二个查询中显示等等)。 问题答案: 也许您应该尝试包括第四列,说明它来自的表,

  • 问题内容: 有什么不同的方法可以循环遍历mysql结果集?我是PHP和MySQL的新手,所以我正在寻找简单的循环方法以及有关所提供代码如何工作的解释。 问题答案: 这是一个完整的示例: http://php.net/manual/en/mysqli-result.fetch- array.php 连接 选择数据库 进行查询 循环处理结果并获取数组以获取行

  • 问题内容: 这是我正在使用的代码: 在我的视图中,这是我要查看的值: 想象一下,我查询类似的东西,并且返回一个结果集,例如: 如何遍历每个值并输出呢? 这里的文档没有用,因为我尝试了应该存在的方法,但是解释器给我一个错误,指出这些方法不存在。我使用了错误的文档吗? http://www.tmtm.org/en/mysql/ruby/ 谢谢! 问题答案: 如果您使用的是mysql2 gem,那么您应

  • 我想将结果添加到resultset,并使用table显示结果,这是我的java代码 错误显示"未找到列'Janunary'。" 很抱歉我没有获得足够的声誉,所以我将存储过程的结果写如下。 查询代码: