fgf*_*jhm 0 java sql postgresql jdbc resultset
我的数据库中有一个表,它有两列: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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
线程"main"中的异常org.postgresql.util.PSQLException:此ResultSet已关闭.at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed(AbstractJdbc2ResultSet.java:2654)at org.postgresql.jdbc2.AbstractJdbc2ResultSet.next(AbstractJdbc2ResultSet.java:1786)
你能帮我找到问题所在吗?
Javad的Jdbc声明说
默认情况下,每个Statement对象只能同时打开一个ResultSet对象.
所以我的猜测是你试图同时为同一个PreparedStatement打开太多的结果集.
编辑:
Postgres jdbc驱动程序doc似乎证实了这一点:
您可以根据需要多次使用单个Statement实例.您可以在打开连接后立即创建一个连接,并将其用于连接的生命周期.但您必须记住,在给定时间,每个Statement或PreparedStatement只能存在一个ResultSet.
| 归档时间: |
|
| 查看次数: |
5128 次 |
| 最近记录: |