Hallo zusammen
Ich versuche eine DB mit einigen tausend Datensätzen zu füllen, die ich über einen Prozess zeilenweise verarbeite.
Nach einiger Zeit taucht die allseits bekannte "Maximale Anzahl offener Cursor überschritten" Fehlermeldung auf.
Ich frage mich nun was ich dagegen tun kann. Meines Wissens schliesse ich sowohl das Statement als auch das ResultSet aber das scheint nichts zu bringen und die max. Anzahl Cursor habe ich auf der DB bereits auf 2000 hochgeschraubt.
Könnt ihr mir sagen was ich noch tun kann oder was allenfalls an meinem Code falsch ist?
Danke für jeden Tipp.
Grüsse Phil
Ich versuche eine DB mit einigen tausend Datensätzen zu füllen, die ich über einen Prozess zeilenweise verarbeite.
Nach einiger Zeit taucht die allseits bekannte "Maximale Anzahl offener Cursor überschritten" Fehlermeldung auf.
Ich frage mich nun was ich dagegen tun kann. Meines Wissens schliesse ich sowohl das Statement als auch das ResultSet aber das scheint nichts zu bringen und die max. Anzahl Cursor habe ich auf der DB bereits auf 2000 hochgeschraubt.
Könnt ihr mir sagen was ich noch tun kann oder was allenfalls an meinem Code falsch ist?
Danke für jeden Tipp.
Grüsse Phil
SQL:
public void insertPortbelegungEintrag(String macAdresse,int portId,int switchId) throws Exception {
String sqlPortbelegungEintragNextId = "select portbelegungId.nextval from dual";
String sqlSpeichernPortbelegungEintrag = "insert into port_temp values(?,?,?,?,?)";
ResultSet result = null;
PreparedStatement prepStmt = null;
Connection con = null;
Date datum = new Date();
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
try {
con = getConnection();
prepStmt = con.prepareStatement(sqlPortbelegungEintragNextId);
result = prepStmt.executeQuery();
result.next();
int portbelegungId = result.getInt(1);
if(!result.next()) {
prepStmt = con.prepareStatement(sqlSpeichernPortbelegungEintrag);
prepStmt.setInt(1,portbelegungId);
prepStmt.setString(2,macAdresse);
prepStmt.setInt(3,portId);
prepStmt.setString(4,df.format(datum));
prepStmt.setInt(5,switchId);
prepStmt.execute();
prepStmt.close();
result.close();
}
} catch (Exception e) {
System.out.println("Fehler: " + e);
}
finally {
String message = "";
result.close();
try {
if (prepStmt != null)
prepStmt.close();
} catch (SQLException e) {
message += " - Fehler beim Schliessen des Statement: "
+ e.getMessage();
}
releaseConnection();
if (message.length() > 0) {
throw new Exception(message);
}
}
}