繁体   English   中英

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

[英]How to get only 5 rows with JDBC from ResultSet?

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

我尝试了循环和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"));                   
            }
        }
    }

它显示来自select SQL的itemList中的所有结果。

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

您可能要加起来像这样的结束条件:

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

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

}

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM