我在我的数据库中有一个表,它包含2列:uid1 - 某人的ID,uid2 - 他的朋友。使用postgresql的Java ResultSet
我想创建一个列表,我有人的朋友 - 直到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);
}
}
}
}
而且我得到了以下错误:
Exception in thread "main" org.postgresql.util.PSQLException: This ResultSet is closed. at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed(AbstractJdbc2ResultSet.java:2654) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.next(AbstractJdbc2ResultSet.java:1786)
你能帮我找到是什么问题?
你知道你可以做到这一点在PostgreSQL的只是一个单一的声明? –
与服务器交谈每一步都非常昂贵。一个带有[递归CTE](http://www.postgresql.org/docs/9.1/static/queries-with.html)的单个查询就是要走的路。 –