2010-12-07 18 views

回答

2

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

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

9

将结果提取到List<YourResultType>并使用Collections.sort()。如果您只需要按照“自然”顺序进行排序,则在结果类型本身中执行Comparable<T>,否则按排序顺序执行Comparator<T>,并将相关比较器的实例传递给Collections.sort()

+0

ow我把它放回rs?我有很多事情调用rs和我不能改变,我需要rs保持原样,但排序 – code511788465541441 2010-12-07 17:51:33

+5

@ user521180:你不。重新设计解决方案。已经够糟糕的是,您不能将数据库用于其设计的作业之一... – 2010-12-07 18:17:51

+0

如何将其放回到RS中:可以使用实现ResultSet的CachedRowSet。但是,手动获取条目有点陈旧。尽管如此,它可以完成。 – 2017-04-20 22:40:29

7

你在数据库中做了ORDER BY

你应该重新评估为什么你不能这样做。如果有人问“如何用锤子插入螺钉?我不能用螺丝刀”,那么不要说服他们螺丝起子是第一个合适的解决方案是不负责任的。

如果你真的真的不能在本地订购结果集,那你倒霉了。这只是数据库中的一个流,因此您必须将其全部读入临时List,对该集合进行排序,然后从那里开始。对于小型结果集这不太可能是个问题,但对于大型结果集,这可能会对效率造成相当大的影响。

0

它看起来像你将不得不负责实施ResultSet接口与自定义对象,会给你你正在寻找的功能....对不起。

0

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

在某些级别上,无论是在代码中还是在数据库中,都必须进行自然数字转换。算法无论运行在哪里都是一种算法。

1

在运行查询并存储到resultSet之前,可以在数据库中对它进行排序。

SELECT * FROM tableName ORDER BY columnName ASC

是这样的,你想要什么?

相关问题