java / jsp如何反转结果集?

时间:2011-12-12 19:38:21

标签: java jsp

我正在编写一堵墙,我想向墙上显示所有内容(评论和帖子等,就像facebook的墙一样)

我正在使用jsp打印出包含评论和帖子的html内容。

ResultSet wallrs = dbconnect.getWallResultset();
    if(wallrs!=null){
        while(wallrs.next()){
            %>
            <br><b><%=wallrs.getString("navn")%></b>
            <div style="max-width: 500px;"><br><%=wallrs.getString("besked") %></div>
            <%

            wallrsid = wallrs.getInt("id");
            ResultSet kommentarrs = dbconnect.getKommentarResultset(wallrsid);

            if(kommentarrs!=null){
                while(kommentarrs.next()){
                    %>
                    <Blockquote><b><%=kommentarrs.getString("navn") %>:</b> <%=kommentarrs.getString("kommentar") %></Blockquote>
                    <%
                }
            }
            if(dbconnect.loggedIn){
            %>
            <form id="<%= wallrsid%>"></form>
            <button onclick="show_form('<%= wallrsid%>')">Kommenter</button>
            <%
            }
        }
        String message = request.getParameter("kommentar");
        if(message!=null){
            dbconnect.createComment(message, request.getRemoteAddr(), wallrsid);
            System.out.println("Message: " + message + " Ip adresse: " + request.getRemoteAddr() + " Besked id: " + wallrsid);
            message = null;
        }
    }
    dbconnect.cleanUp();

这就是我正在处理的事情。它将其打印出来,因此新的评论会在底部而不是在顶部。

如何让它反转?

我知道我可以将结果集循环到一个arraylist,并将arraylist“向后”循环但这似乎是一种资源消耗方式,我认为可能有更好的方法:)

2 个答案:

答案 0 :(得分:9)

只需确保在结尾处获取评论的查询ORDER BY POSTDATE DESC,结果集将返回顶部的最新评论。此外,鉴于真正的数据库非常擅长这类内容,它对于非常大的结果集肯定会有效。

答案 1 :(得分:0)

您不能直接向后循环大多数ResultSets。您应该使用ORDER BY调整数据库查询。

通常,您只能使用next()循环到下一行。根据您的连接配置,您可以使用last()获取最后一个条目,然后使用previous()检索之前的结果。但请注意,这通常需要特殊配置。

检查ResultSet documentation。游标类型定义通常取决于供应商。

我建议你在你的陈述中尝试ORDER BY条款。