私はPostgreSQLデータベースでJDBCを使用しています。 結果セット内のエンティティをクエリすると、5行が返されます。 そのエンティティに関連するもう1つのエンティティですが、私は上記の結果セットで行を使用している間にクエリを実行します。 このクエリを実行すると、上記の結果セットは閉じられます。POSTGRES JDBCで複数の結果セットを使用するには?
これは、一度に1つの接続で1つの結果セットしかアクティブにできないことを意味します。
以前は同じコードがOracle DBサーバーに最適でした。
DB管理者に複数の結果セットを許可するようにサーバーを設定する必要がありますか? コードを変更するには? ポストグレイではできないのですか?ここで は、詳細のコードです:
Connection conn = PTSConnection.getConnection();
Statement stmt = conn.createStatement();
ResultSet lines = stmt.executeQuery("SELECT LINEID,STARTSTOPID,ENDSTOPID FROM LINES"); **//first resultset is active**
while (lines.next()){
int lineId= lines.getInt(1);
Stop ss = StopStorage.getByID(lines.getInt(2));
Stop es = StopStorage.getByID(lines.getInt(3));
ResultSet stops = stmt.executeQuery("SELECT STOPID FROM STOPSINLINES WHERE LINEID=" + lineId); **//first resultset dies**
List<Stop> lineStops = new ArrayList<Stop>();
while(stops.next()){
Stop stop = StopStorage.getByID(stops.getInt(1));
lineStops.add(stop);
}
stops.close();
Line aLine = null;
ResultSet emergencyLine = stmt.executeQuery("SELECT CAUSE, STARTTIME, ENDTIME FROM EMERGENCYLINES WHERE LINEID =" + lineId);
if(emergencyLine.next()){
String cause = emergencyLine.getString(1);
Time startTime = emergencyLine.getTime(2);
Time endTime = emergencyLine.getTime(3);
aLine = new EmergencyLine(ss, es, cause, startTime, endTime, (Stop[]) lineStops.toArray(new Stop[lineStops.size()]));
} else {
aLine = new Line(ss, es, (Stop[]) lineStops.toArray(new Stop[lineStops.size()]));
}
emergencyLine.close();
LineRepository.getInstance().addLine(aLine);
}
lines.close();