我正在编写一面墙,我想在这面墙上显示所有的内容(评论和帖子等。就像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,但这似乎是一种消耗资源的方式,我认为可能有更好的方法:)
发布于 2011-12-13 03:39:46
只需确保获取注释的查询在末尾具有ORDER BY POSTDATE DESC,并且返回的结果集将在顶部包含最近的注释。另外,考虑到真正的数据库非常擅长这类东西,对于非常大的结果集来说,它肯定是有效的。
发布于 2011-12-13 03:45:26
您不能直接向后循环遍历大多数ResultSets。您应该使用ORDER BY调整数据库查询。
通常,您只能使用next()循环到下一行。根据连接的配置,您可以使用last()获取最后一个条目,然后使用previous()检索先前的结果。但是,请注意,这通常需要特殊的配置。
检查ResultSet documentation。游标类型的定义通常依赖于供应商。
我建议您在语句中尝试使用ORDER BY子句。
https://stackoverflow.com/questions/8479852
复制相似问题