我正在编写一堵墙,我想向墙上显示所有内容(评论和帖子等,就像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“向后”循环但这似乎是一种资源消耗方式,我认为可能有更好的方法:)
答案 0 :(得分:9)
只需确保在结尾处获取评论的查询ORDER BY POSTDATE DESC
,结果集将返回顶部的最新评论。此外,鉴于真正的数据库非常擅长这类内容,它对于非常大的结果集肯定会有效。
答案 1 :(得分:0)
您不能直接向后循环大多数ResultSets
。您应该使用ORDER BY
调整数据库查询。
通常,您只能使用next()
循环到下一行。根据您的连接配置,您可以使用last()
获取最后一个条目,然后使用previous()
检索之前的结果。但请注意,这通常需要特殊配置。
检查ResultSet documentation。游标类型定义通常取决于供应商。
我建议你在你的陈述中尝试ORDER BY
条款。