猿问

如何使用 JDBC 从 ResultSet 中只获取 5 行?

我有一个 select 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"));                   

            }

        }

    }

itemList它显示了来自选择 SQL的所有结果。


慕森卡
浏览 190回答 3
3回答

慕慕森

目前,循环的单次迭代会耗尽整个结果集。您可能想要添加结束条件,例如:for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;5&nbsp;&&&nbsp;rs.next();&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;itemList.add(rs.getString("idName"));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }请注意,您的尝试 withwhile(rs.next() && i < 5)也应该有效,您可能只是错过了i.

天涯尽头无女友

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

呼唤远方

您只能从客户端的结果集中读取前 5 行,但理想情况下您应该限制数据库返回的行数。limit 5在查询中使用。这将避免将那些额外的行从数据库返回到客户端所需的大量不必要的工作。
随时随地看视频慕课网APP

相关分类

Java
我要回答