在ResultSet Java中排序数据

在ResultSet Java中排序数据,java,jdbc,resultset,Java,Jdbc,Resultset,我获得了一些查询的结果集,例如: select * from students order by roll 现在,是否可以执行一个等价的查询 Select * from students order by dob;` 在结果集上 不建议在查询之后(即,当您获得结果集时)进行排序。 您应该始终在SQL Server上执行操作,而不是在代码本身上执行操作 ResultSet是某种迭代对象,这意味着只能逐个移动。因此,为了对其进行排序,首先需要将数据转移到集合中,然后才对其进行排序。 与SQL排

我获得了一些查询的结果集,例如:

select * from students order by roll 
现在,是否可以执行一个等价的查询

Select * from students order by dob;`

结果集上

不建议在查询之后(即,当您获得结果集时)进行排序。 您应该始终在SQL Server上执行操作,而不是在代码本身上执行操作

ResultSet是某种迭代对象,这意味着只能逐个移动。因此,为了对其进行排序,首先需要将数据转移到集合中,然后才对其进行排序。 与SQL排序相比,这是一种开销,可以避免。

根据经验法则(好吧,几乎是这样),可以在数据库中完成的所有事情都应该在那里完成,因此您应该使用
对数据库中的数据进行排序。。。订购人。。。ASC/DESC


但是,如果由于某种原因您不能这样做,您应该将RS中的所有数据提取到一个集合中(可能是将您的数据映射到域对象),并使用
Collections.sort()对其进行排序
方法,使用适当的
比较器
通过迭代结果并将其添加到新列表中,从
结果集
获取
数组列表。

然后使用
Collections.sort(Collection,Comparator)
对结果进行排序

否。将您的数据提取到一个集合中并进行排序。请您详细说明您试图实现的目标以及原因?你需要一种稳定的吗?不,您不能直接对RS进行排序或对其执行SQL查询it@SvetlinZarev我有一个很大的数据集,只有一个数据集实例可以放入内存。为了获得高性能,我希望数据集位于内存上。因此,在我的例子中,在内存中对数据进行排序是更可取的。这是在数据库中进行排序的另一个原因,但是如果您不想/不能这样做,那么只需将结果集映射到域对象并使用them@Olayinka,在ResultSet中添加了说明