如何在java中对ResultSet进行排序?

时间:2010-12-07 17:23:51

标签: java database jdbc

我不能在数据库中按顺序执行ORDER BY

6 个答案:

答案 0 :(得分:9)

将结果解压缩为List<YourResultType>并使用Collections.sort()。如果您只需要按一个“自然”顺序排序,那么在结果类型本身中实现Comparable<T> ...否则每个排序顺序实现Comparator<T>一次,并将相关比较器的实例传递给Collections.sort()

答案 1 :(得分:8)

您在数据库中执行ORDER BY

你应该重新评估为什么你不能这样做。如果有人问“如何用锤子插入螺丝?我不能使用螺丝刀”,不要说服螺丝刀在第一时间是正确的解决方案是不负责任的。

如果你真的,那么无法原生地订购结果集,那你就不走运了。它只是来自数据库的流,因此您必须将其全部读入临时List,对该集合进行排序,然后从那里开始。对于较小的结果集,这可能不是一个问题,但对于较大的结果集,这可能会对效率造成相当大的影响。

答案 2 :(得分:2)

将数据从ResultSet中移出到您想要的任何对象表示中,然后对数据进行排序,就像在该点处的任何其他数据一样。

如果您使用Collections.Sort对复杂对象执行排序,则需要实现Comparator

答案 3 :(得分:1)

可以在运行查询之前在数据库中对其进行排序,然后存储在resultSet中。

SELECT * FROM tableName ORDER BY columnName ASC

你想要这样的东西吗?

答案 4 :(得分:0)

看起来您必须负责使用自定义对象实现ResultSet接口,该对象将为您提供您正在寻找的功能....抱歉。

答案 5 :(得分:0)

这可以在查询本身中解决。您按计算列排序。您计算的列将自然值转换为可以按数字或字母顺序排序的值。您可以定义“转换”函数并在order by子句中调用该函数。

在某种程度上,无论是在代码中还是在数据库中,都必须进行自然到数字转换。算法无论在何处运行都是算法。