如何只从java.sql.ResultSet获取第一行?

时间:2010-04-19 13:55:30

标签: java jdbc

我有一个ResultSet对象,其中包含从sql查询返回的所有行。

我希望能够(在java代码中,不强制它在SQL中)能够获取ResultSet并对其进行转换,使其仅包含1(第一行)。

实现这一目标的方法是什么?另外,是否有另一个适当的类(在java.sql或其他地方的某个地方)只存储一行而不是修剪我的ResultSet?

谢谢!

4 个答案:

答案 0 :(得分:16)

为了限制 result set 中的行数,您可以执行以下操作:

String yourQuery = "select * from some_table";
PreparedStatement statement = connection.prepareStatement(yourQuery); 
statement.setMaxRows(1); 
rs = statement.executeQuery();

对于只能容纳一行的特定类,这实际上取决于您要对数据执行的操作。例如,您可以只提取 result set 的内容并将其存储在数组中,或者如果您需要名称和值 map 。如果您希望使用特定对象而不是通用数据结构,也可以将数据读入POJO。

答案 1 :(得分:5)

答案 2 :(得分:4)

您提到需要存储单行数据,在这种情况下,我会说使用ResultSet可能是坏主意它通常会消耗数据库资源,直到关闭(例如底层java.sql.Connection)。

相反,我建议将ResultSet的第一行读入POJO,也许使用Spring的JDBC实用程序类(例如RowMapper)来简明扼要地实现。在此之后,关闭 ResultSet以及关联的StatementConnection(或允许Spring为您执行此操作)。

答案 3 :(得分:0)

在SQLite中,您可以限制执行的行数:

 "SELECT * FROM YOURTABLE ORDER BY YOURCOLUMN ASC LIMIT 3 OFFSET 3;

其中LIMIT是您想要的行数,OFFSET是您要从哪里开始的rownumber。

http://www.sqlitetutorial.net/sqlite-limit/