Re: java.lang.NullPointerException on imbricated queries - Mailing list pgsql-jdbc

From Michael Stephenson
Subject Re: java.lang.NullPointerException on imbricated queries
Date
Msg-id 3F000068.30601@openworld.co.uk
Whole thread Raw
In response to java.lang.NullPointerException on imbricated queries  (Olivier BULLAT <Olivier.Bullat@ifma.fr>)
List pgsql-jdbc
Olivier,

One statement can, by default, have only one result set, when you execute the
second query the first result set is closed.

You'll need to rewrite your code to something like:

        Statement innerStmt = conn.createStatement();

        Query1 = "SELECT * FROM example1;";
        rs1 = stmt.executeQuery(Query1);
        while (rs1.next()) {
                Query2 = "SELECT * FROM example2;
                rs2 = innerStmt.executeQuery(Query2);
                while (rs2.next()) {
                        // Something .../...
                }
        }

The postgresql jdbc driver probably shouldn't npe in these cases,

Hope this helps,

Michael

Olivier BULLAT wrote:
> Hello,
>
> We have a web application in Apache, Posgresql 7.2, servlet java (JDK
> 1.2), Jserv and jdbc7.2dev-1.2.jar.
> A lot of programs runs normally with JDBC access to postgresql. But when
> we use two imbricated queries like this example, a message
> JAVALANGEXEPTION java.lang.NullPointerException occurs:
>
> 1       Query1 = "SELECT * FROM example1;";
> 2       rs1 = stmt.executeQuery(Query1);
> 3       while (rs1.next()) {
> 4               Query2 = "SELECT * FROM example2;
> 5               rs2 = stmt.executeQuery(Query2);
> 6               while (rs2.next()) {
> 7                       // Something .../...
> 8               }
> 9       }
>
> Programme DetailsRapports.java: JAVALANGEXEPTION
> java.lang.NullPointerException:
> java.lang.NullPointerException:
>         at org.postgresql.jdbc2.ResultSet.next(ResultSet.java:113)
>         at DetailsRapports.AfficheEntrees(DetailsRapports.java:68)
>         at DetailsRapports.service(DetailsRapports.java:43)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
>         at
> org.apache.jserv.JServConnection.processRequest(JServConnection.java:317)
>         at org.apache.jserv.JServConnection.run(JServConnection.java:188)
>         at java.lang.Thread.run(Thread.java:479)
>
> This message occurs on line 3 "while (rs1.next()) {" after a first good
> Query1 and a first good Query2.
>
> Any help would be appreciated.
>
>
> --------------------------------------------------------------------------
> Olivier BULLAT
> Responsable du Centre de Ressources Informatiques
> Institut Francais de Mecanique Avancee - IFMA
> Campus de CLERMONT-FERRAND / Les Cezeaux
> BP 265
> 63175 AUBIERE Cedex
> Tel:   04.73.28.80.35
> Fax:  04.73.28.81.00
> mail: _Olivier.Bullat@ifma.fr
> http://www.ifma.fr <http://www.ifma.fr/>
> _--------------------------------------------------------------------------
>


--
Web Applications Developer
Open World Ltd, 11 Riverside Court, Riverside Road, Bath, BA2 3DZ.
Tel: +44 1225 444950  Fax: +44 1225 336738  http://www.openworld.co.uk/

CONFIDENTIALITY NOTICE
The information contained in this message is confidential, intended only for
the use of the individual or the entity named as recipient. If the reader of
this message is not that recipient, you are notified that any dissemination,
distribution or copy of this message is strictly prohibited. If you have
received this message in error, please immediately notify us by telephone on
the number above. Your co-operation is appreciated.


pgsql-jdbc by date:

Previous
From: Dave Cramer
Date:
Subject: Re: Allow setObject(x,y,Types.INTEGER) if y is Boolean &
Next
From: Andreas Koch
Date:
Subject: Populating a database with huge amounts of data