如何循环使用多个ResultSet

时间:2016-06-01 17:07:53

标签: java html jsp jdbc resultset

enter image description here 我想复制上面显示的图片上的内容
所以我想使用while循环使用ResultSet循环来访问数据库中不同表的每个循环,如图所示以下代码

<%
        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.ServletException: java.sql.SQLException: Operation not allowed after ResultSet closed
所以我尝试使用ResultSet rs2的另一个变量,但我仍然收到相同的错误消息
我该如何解决这个问题?或者我可以使用任何其他方法来做到这一点?
我在这里使用的2个表在字段User_Name和Transaction_Date上具有相同的值,如Query3

所示

1 个答案:

答案 0 :(得分:2)

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