我有一个关于jdbc Resultset
的问题。
我需要在其中一个表中获取一些记录。检索记录后,如何使用ID列表搜索ResultSet中的记录?
我应该先将结果集转换为hashmap吗?
答案 0 :(得分:2)
检索记录后,如何使用ID列表搜索ResultSet中的记录?
这是错误的做法。在获取ResultSet之前,应该在SQL查询中进行搜索和过滤。
之后,假设您已经ResultSet rs
,请使用
while (rs.next()) {
// do whatever you want with results
}
在ResultSet上搜索 - >糟糕的做法。
答案 1 :(得分:1)
假设您不想修改SQL查询以仅首先检索这些结果,然后将结果转换为更有用的数据结构(例如,为每个记录创建一个对象,然后将它们存储在哈希映射中通过ID)是一个很好的方式,是的。
答案 2 :(得分:0)
将ResultSet视为数据库的一种接口,ResultSet本身不包含任何数据,因此无需搜索。
因此,如果您需要操作,搜索,...您最好将所有数据读入结构中。
哈希结构可能是最好的,但这取决于您构建数据的方式。
您不应该做的唯一事情是在ResultSet上多次交互,因为除非您使用特定的缓存实现,否则会导致大量不必要的数据库流量
答案 3 :(得分:0)
您可以借助“next()”[resultSet.next()]方法遍历循环结果集。使用getString(),getInt(),......
获取值例: 设rs是我的结果集,
而(rs.next()){
S.o.p( “名称:” + rs.getString( “名称”)); S.o.p( “年龄:” + rs.getInt( “时代”)); }
答案 4 :(得分:0)
我同意HashMap会起作用。如果记录数量很大,则可以通过不将ResultSet数据加载到任何结构中来节省时间和内存。如果您在查询中按ORDER BY ID,则可以轻松地使用rs.next();
从ResultSet直接获取数据。