java - 如何从 ResultSet 中获取指定数量的行

标签 java html prepared-statement resultset

我只需要结果集中的两个最新项目,并且想知道在没有中断的情况下做到这一点的最佳方法是什么。我意识到 rs.next() 返回 truefalse 并尝试用计数器阻止它,但失败了。我现在有这个:

while(rs.next()){
    String name = rs.getString("name");
    String startTime = rs.getString("starting_time");
    String endTime = rs.getString("ending_time");
    String date = rs.getString("directory");
    String loc = rs.getString("location");

    htmlBuilder.append("<li><a href='public/committees/calendar'>"+ name+"<br>"); 
    htmlBuilder.append(date +"  "+startTime+" - "+endTime+"</a> <!-- Link/title/date/start-end time --><br>");
    htmlBuilder.append("<strong>Location: </strong>"+loc+"<br>");
    htmlBuilder.append("</li>");        
}       
html = htmlBuilder.toString();

正如您所知,这会返回 ResultSet 中的所有内容,但我只需要前两个条目。

这是我的正确查询:

SELECT  to_char(to_date(to_char(x.starting_date), 'J'),'mm/dd/yyyy') as start_date,  to_char(to_date(to_char(x.ending_date), 'J'),'mm/dd/yyyy') as end_date,  to_char(to_date(to_char(x.starting_date), 'J'),'yyyy-mm-dd') as directory,  x.starting_time,  x.ending_time,  x.description,  x.description as location,  x.name,  x.short_name,  x.add_info_url,  x.contact_name,  x.contact_info FROM calitem x, calendar x, calitemtypes x WHERE x.calendar_id = x.calendar_id AND x.short_name LIKE ? AND x.style_id = 0 AND x.starting_date > to_char(sysdate-1, 'J') AND x.item_type_id = x.item_type_id AND ROWNUM <= 3 ORDER BY to_date(to_char(x.starting_date), 'J')

添加 rownum 属性效果很好,并且查询在返回之前已排序。感谢您的帮助

最佳答案

您应该限制查询仅返回最新的两行。这可以通过 LIMIT 子句(存在于 MySQL 中,不确定其他数据库是否存在)和 ORDER BY 子句来实现。

不需要添加索引来计算 ResultSet 返回的行数。

关于java - 如何从 ResultSet 中获取指定数量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25366581/

相关文章:

java - 将 mongoDB shell 命令转换为 java

java - 获取 JTable 单元格的值(value)

java - 我的 Activity 因奇怪的原因而崩溃

CSS Div 尊重其他 div

PDO:将多余的参数传递给准备好的语句

java - 在字符串中搜索 * 并通过任何内容替换它

javascript - 如果提交了输入字段的名称,为什么表单不使用 javascript 提交

try-with-resources 中的 Java 准备语句不起作用

php - 在准备好的语句中获取失败的查询

javascript - 使用 jQuery 时如何让 href 跟随链接