first() causes NullPointerException - Mailing list pgsql-jdbc
From | Nico |
---|---|
Subject | first() causes NullPointerException |
Date | |
Msg-id | cqe4r8$1969$1@news.hub.org Whole thread Raw |
Responses |
Re: first() causes NullPointerException
|
List | pgsql-jdbc |
I have a servlet that extracts data from a postgresql database and makes a nice menu of it. The connection works fine, I can execute my sql-statement without any problems, but when I try the first() method of ResultSet it fails: it throws a NullPointerException at line 216. This are the first lines of the exception: java.lang.NullPointerException at org.postgresql.jdbc2.AbstractJdbc2ResultSet.first(AbstractJdbc2ResultSet.java:216) at menus.DBMenu.Menupage(DBMenu.java:68) at menus.DBMenuFind.doGet(DBMenuFind.java:103) Here is the java source code I used for the connection and resultset: protected static ResultSet getQuery(String strstatement) throws SQLException { ResultSet resultset=statement.executeQuery(strstatement); if(resultset==null) throw new SQLException("Resultset is null at getQuery()."); if(resultset.getWarnings()==null) return resultset; else { String errmessage=""; while(resultset.getWarnings().getErrorCode()!=0) { errmessage+=resultset.getWarnings().getMessage()+"\n"; resultset.getWarnings().getNextException(); } throw new SQLException("SQL Fout getQuery(): "+errmessage); } } protected final static void Menupage(String app) throws MenuException, DriverNotFoundException { //resultsetL1 and resultsetL2 are queries that extract data from views in the db and resultsetL1C and //resultsetL2C are the queries that count the rows in those queries. ResultSet resultsetL1,resultsetL2,resultsetL1C,resultsetL2C; try { connect(strDbdriver); resultsetL1=getQuery("SELECT * FROM \"qryMenuL1\" ORDER BY "+ "\"MenuL1Order\""); resultsetL1C=getQuery("SELECT COUNT(\"MenuL1ID\") FROM \"qryMenuL1\""); if(resultsetL1==null) throw new MenuException("ResultsetL1 is null for unknown reasons."); if(resultsetL1C==null) throw new MenuException("ResultsetL1C is null for unknown reasons."); resultsetL1C.first(); if(resultsetL1C.getInt(1)==0) throw new MenuException("Menu error: no data found."); resultsetL1.first(); //following lines are irrelevant since the exception occurs at first(). } protected static void connect(String dbdriver) throws DriverNotFoundException { String connprob=""; try { connprob="driver problem:"+dbdriver; Class.forName(dbdriver); connprob="connection problem: jdbc:postgresql://localhost/"+dbname+ "?user=username&password=password"; connection = DriverManager.getConnection("jdbc:postgresql://localhost/" + dbname + "?user=username&password=password"); connprob="statement problem"; statement = connection.createStatement(); } catch(ClassNotFoundException exception) { throw new DriverNotFoundException(dbdriver); } catch(Exception exception) { exception.printStackTrace(); throw new DriverNotFoundException("Connection problem: "+exception.getMessage()+"<br>"+connprob); } } As you could see, I changed the username & password for security reasons, any SQL syntax error is captured before the first() method is called. And if the executeQuery() method returns null which is normally impossible according to the java docs, it is captured, too. I have tried everything. Does anybody got any ideas? Nico.
pgsql-jdbc by date: