【发布时间】:2011-12-12 16:56:10
【问题描述】:
我的数据库中有一个表,其中包含 2 列:uid1 - 某人的 id,uid2 - 他的朋友。
我想创建一个我某人的朋友的列表 - 直到 5 深度连接。
所以我构建了以下递归方法:
private void recursive(int theUid,ResultSet rs,ArrayList<Integer> friends,int count,int next,PreparedStatement pstmt) throws SQLException{
if(count>=1 && next==theUid){
return;
}
else if(count>=DEPTH_OF_CONNECTION){
return;
}
else{
pstmt.setInt(1,next);
rs=pstmt.executeQuery();
count++;
while(rs.next()) {
friends.add(rs.getInt(1));
recursive(theUid,rs,friends,count,rs.getInt(1),pstmt);
}
}
}
}
我收到以下错误:
线程“主”org.postgresql.util.PSQLException 中的异常:这个 结果集已关闭。在 org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed(AbstractJdbc2ResultSet.java:2654) 在 org.postgresql.jdbc2.AbstractJdbc2ResultSet.next(AbstractJdbc2ResultSet.java:1786)
你能帮我找出问题所在吗?
【问题讨论】:
-
你知道在 PostgreSQL 中只需一条语句就可以做到吗?
-
每一步都与服务器对话非常昂贵。带有recursive CTE 的单个查询将是可行的方法。
标签: java sql postgresql jdbc resultset