当前位置: 首页 > 知识库问答 >
问题:

如何循环使用多个结果集[重复]

梁新觉
2023-03-14

<%
        String Query2 = "SELECT * FROM transaction";
        rs = st.executeQuery(Query2);
    %>

    <h2 align="center">Member</h2>
    <%
        while(rs.next())
        {
    %>
            <table bgcolor="#000000" align="center" cellspacing="10px">
                <tr>
                    <th>Transaction ID</th>
                    <th>Transaction Date</th>
                    <th>Costumer Name</th>
                    <th> </th>
                </tr>
                <tr>
                    <td><%=rs.getString("Transaction_ID")%></td>
                    <td><%=rs.getString("Transaction_Date")%></td>
                    <td><%=rs.getString("User_Name")%></td>
                    <td> </td>
                </tr>
                <%
                    String Query3 = "SELECT * FROM list WHERE User_Name = '"+rs.getString("User_Name")+"' AND Date = '"+rs.getString("Transaction_Date")+"'";
                    ResultSet rs2 = st.executeQuery(Query3);

                    while(rs2.next())
                    {
                %>
                        <tr>
                            <td>Product</td>
                            <td>Quantity</td>
                            <td>Price</td>
                            <td>Total</td>
                        </tr>
                        <tr>
                            <td><img src="Picture/<%=rs.getString("Image")%>"></td>
                            <td><%=rs.getString("Quantity")%></td>
                            <td><%=rs.getString("Price")%></td>
                            <td><%=rs.getString("Total")%></td>
                        </tr>
                <%
                    }
                %>
            </table>
            <br/>
    <%
        }
    %>


但我得到一个错误说javax.servlet.ServletExc0019:java.sql.SQLExc0019:操作不允许后ResultSet关闭
所以我尝试使用另一个变量的ResultSet这是rs2但是我仍然收到相同的错误消息
我如何解决这个问题?或者有什么其他方法我可以用来做这件事?
我在这里使用的两个表在字段User_Name和Transaction_Date上具有相同的值,如Query3所示

共有1个答案

常永怡
2023-03-14

如我所见,您对两个查询都使用相同的语句对象。正如留档(http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html)所说,默认情况下,每个语句对象只能同时打开一个ResultSet对象。因此,如果一个ResultSet对象的读取与另一个对象的读取交错,则每个对象都必须由不同的语句对象生成。语句接口中的所有执行方法都隐式关闭状态的当前ResultSet对象(如果存在打开的对象)。

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

  • 我在同一个目录中有几个具有相同结构的。json文件。我想从每个json文件的一些键创建一个具有值的唯一csv文件。 通过一个文件循环,一切都正常。下面是脚本的快照:

  • 我在研究mysqli准备的声明,我有两个问题。 在阅读过程中,我发现预处理语句的执行顺序如下所示: 这是我的第一个问题: 在我阅读时,它还提到以下内容: 如果不将结果绑定到变量,请使用$row=$stmt- 他们使用这两种方法中的任何一种来循环结果集是否有任何优点/缺点?如果没有区别,那么为什么还要麻烦使用$stmt绑定结果呢- 这是我的另一个问题: $stmt- 希望你的回答能让我更好地理解事先

  • 这个问题应该很简单,而且可能会让人恼火,但我仍然对使用Java关闭结果集感到怀疑。每个语句都应该这样做,或者结果集应该只在final中关闭?

  • 本文向大家介绍如何使用Dapper处理多个结果集与多重映射实例教程,包括了如何使用Dapper处理多个结果集与多重映射实例教程的使用技巧和注意事项,需要的朋友参考一下 前言 对象关系映射(ORM)已经被使用了很长时间,以解决在编程过程中对象模型与数据模型在关系数据库中不匹配的问题。 Dapper是由Stack OverFlow团队开发的开源的,轻量级的ORM.相比于其他的ORM框架,Dapper速

  • 问题内容: 当我从命令行调用存储的proc时,我得到以下信息。 这是我的Java代码的片段 当我执行该语句时,仅返回event_table结果。我阅读以下查询: 我试图避免对数据库发出多个请求,因为它非常慢(300毫秒,具体取决于多少结果) 可能吗? 问题答案: 我找到了这篇很棒的文章。http://www.herongyang.com/JDBC/MySQL-CallableStatement-M