如何从ResultSet中仅使用JDBC获得5行?

时间:2019-07-10 09:44:13

标签: java sql jdbc

我有一个选择SQL,该SQL可能会获取许多行数据。 我只想要前5行。 除了添加rownums = 5或添加statement.setMaxRows(5)。 我可以通过使用Java编码获得结果吗? 谢谢。

我尝试了loop和while(rs.next()&& i <5)。它们都不起作用。

    try (Connection connection = abc.getConnection();
        PreparedStatement statement = connection.prepareStatement(sql)) 
    {
        statement.setString(1,idNum);
        ResultSet rs = statement.executeQuery();

        for (int i = 0; i < 5; i++) {
            while (rs.next()) {
                itemList.add(rs.getString("idName"));                   
            }
        }
    }

它在选择SQL的itemList中显示所有结果。

3 个答案:

答案 0 :(得分:4)

当前,循环的一次迭代会耗尽整个结果集。

您可能希望添加诸如以下条件:

for (int i = 0; i < 5 && rs.next(); i++) {

    itemList.add(rs.getString("idName"));                   

}

请注意,您尝试使用while(rs.next() && i < 5)也应该可行,您可能只是错过了i的增量。

答案 1 :(得分:2)

您只能从客户端的resultSet读取前5行,但是理想情况下,您应该限制数据库返回的行数。在查询中使用limit 5

这将避免将多余的行从数据库返回到客户端所需的大量不必要的工作。

答案 2 :(得分:1)

您的查询负责从DB提取数据,因此最好控制从db本身的检索行,这将避免Java代码检查。根据您的要求在查询中使用限制5。