我有一个ResultSet对象,其中包含从sql查询返回的所有行。
我希望能够(在java代码中,不强制它在SQL中)能够获取ResultSet并对其进行转换,使其仅包含1(第一行)。
实现这一目标的方法是什么?另外,是否有另一个适当的类(在java.sql或其他地方的某个地方)只存储一行而不是修剪我的ResultSet?
谢谢!
答案 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
以及关联的Statement
和Connection
(或允许Spring为您执行此操作)。
答案 3 :(得分:0)
在SQLite中,您可以限制执行的行数:
"SELECT * FROM YOURTABLE ORDER BY YOURCOLUMN ASC LIMIT 3 OFFSET 3;
其中LIMIT是您想要的行数,OFFSET是您要从哪里开始的rownumber。