16. juni 2008 - 20:51Der er
2 kommentarer og 1 løsning
ResultSet is closed
Jeg har den mest underlige fejl:
java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.ResultSet.checkClosed(ResultSet.java:652) at com.mysql.jdbc.ResultSet.next(ResultSet.java:5942) at com.kpw.blogwatch.ReportGenerator.getUrgencyBlogsInTimeFrame(ReportGenerator.java:217)
I denne metode:
public List<Blog> getUrgencyBlogsInTimeFrame(Date sincedate) { List<Blog> results = new ArrayList<Blog>(); try { Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM categorizedblog WHERE priority='3'"); while(rs.next()) { String refindkey = rs.getString("refindkey"); ResultSet rs2 = stmt.executeQuery("SELECT * FROM blog WHERE refindKey='" + refindkey + "' AND TIME_TO_SEC(TIMEDIFF('" + DatabaseFunctions.formatDateSQL(sincedate) + "',blogdate)) > 0"); while(rs2.next()) { Blog b = new Blog(); b.setRefindkey(rs2.getString("refindKey")); b.setBlogdate(rs2.getTimestamp("blogdate")); b.setTitle(rs2.getString("title")); b.setUrl(rs2.getString("url")); results.add(b); } } } catch (SQLException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } Collections.sort(results); Collections.reverse(results); return results; }
Linie 217 er while(rs.next()) {
Det er noejagtig samme standard teknik jeg bruger i alle andre metoder, men i denne her synes den resultsettet er closed...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Connection con1 = createConnection(); Connection con2 = createConnection(); try { Statement stmt1 = con1.createStatement(); ResultSet rs1 = stmt1.executeQuery("SELECT * FROM categorizedblog WHERE priority='3'"); while(rs1.next()) { String refindkey = rs1.getString("refindkey"); Statement stmt2 = con2.createStatement(); ResultSet rs2 = stmt2.executeQuery("SELECT * FROM blog WHERE refindKey='" + refindkey + "' AND TIME_TO_SEC(TIMEDIFF('" + DatabaseFunctions.formatDateSQLFull(sincedate) + "',blogdate)) > 0"); while(rs2.next()) {
Det var en god ide at lave flere connections. Den er holdt op med at brokke sig. Jeg synes nu ellers tidligere jeg har brugt samme connection og statement til at lave flere resultsets, men det kan vaere jeg ikke opdagede fejlen der...
Du kan i hvert fald inkassere dagens points fra mig her :) Og tak fordi du altid er klar til at hjaelpe.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.