Re: NullPointer error returned from ResultSet.java
От | G.Nagarajan |
---|---|
Тема | Re: NullPointer error returned from ResultSet.java |
Дата | |
Msg-id | NFBBIOPECKPCJJHHBOGJKEMIDIAA.gnagarajan@dkf.de обсуждение исходный текст |
Ответ на | NullPointer error returned from ResultSet.java (Jeff Duffy <jeff@alanne.com>) |
Список | pgsql-jdbc |
Hi, I am also getting the same error. In my case I am using a prepared statement to create the resultset like PreparedStatemet stmt = "..."; callerFunction() { createPreparedStatement(); fun1(); closePreparedStatement(); } fun1() { Results rs = stmt.executeQuery(); while (rs.next() ) { fun1(); //recursive call } rs.close(); } The null pointer exception is throws after three recursive calls. The code at 113 is rows.size(). Perhaps it has something to do with caching? The error doesn't come if I use normal statements. Regards, Nagarajan. > -----Original Message----- > From: pgsql-jdbc-owner@postgresql.org > [mailto:pgsql-jdbc-owner@postgresql.org]On Behalf Of Jeff Duffy > Sent: Monday, October 07, 2002 5:57 PM > To: pgsql-jdbc@postgresql.org > Subject: [JDBC] NullPointer error returned from ResultSet.java > > > Greetings, > > I have a JSP page with a rather large scriptlet that uses multiple nested > statements and ResultSets. Under very specific conditions I am > encountering > the following error: > > java.lang.NullPointerException > at org.postgresql.jdbc2.ResultSet.next(ResultSet.java:113) > > > Here's one pertinent snippet of my code: > ( This code begins inside a while(rs.next()) loop for ResultSet rs, > using Statement stmt) > > > sql.append("AN SQL QUERY"); > rs2 = stmt2.executeQuery(sql.toString()); > > while(rs2.next()){ > String courseId = rs2.getString(1); > String roleName = rs2.getString(2); > > rs3 = stmt3.executeQuery("SELECT nextval('assignment_id')"); > rs3.next(); > assignmentId = rs3.getString(1); > > sql.delete(0, sql.length()); > sql.append("AN SQL QUERY"); > stmt3.executeUpdate(sql.toString()); > } > > Through debugging it appears that rs2 is throwing the error; the message > states the error is in method next(), but if I have only zero records or > only one record in rs2, there is no error. It's only when I have multiple > records that the error is thrown the second time round the while > loop, so I > suspect it may be thrown at the assignment of courseId. > > This error is reproduced given the same conditions (nested > ResultSets with > the innermost ResultSet executing an Update inside a > while(ResultSet.next()) > loop. It almost seems that the call to rs3.executeUpdate() is > closing rs2, > but I cannot see why that would happen. This is occurring in at least six > different source files. > > If I create a new Vector and stuff the contents of rs2 into it, then > iterate over the vector and use rs3 as shown above, no error is thrown. > > Updating to the 7.3beta1 JDBC driver changes the error message to: > > javax.servlet.ServletException: postgresql.con.closed > > which is even more puzzling. > > > Notes about my coding style that may be relevant: > - I use one StringBuffer for all sql queries and clear it for > each new query > for efficiency. This hasn't ever caused problems elsewhere. > > - I predeclare all Statement and ResultSet objects at the > outermost block of > code (the 'top') like so: > > Statement stmt = conn.createStatement(); > Statement stmt2 = conn.createStatement(); > Statement stmt3 = conn.createStatement(); > ResultSet rs, rs2, rs3; > > Other data: > > - The connections are obtained from a custom class that uses the jdbcpool > pool manager. > - I'm using the Sun JDK v1.4.0 for Linux (it happens on Win32 as well). > - The JDBC library is v7.2 (the pgjdbc2.jar binary download). > - PostgreSQL 7.2.1 on i686-pc-linux-gnu, compiled by GCC 2.96 > > Any flashes of insight? > > Thanks > > Jeff Duffy > jeff@alanne.com > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org
В списке pgsql-jdbc по дате отправления: