ResultSet.next() throws NullPointerException
Hello,
When running the following code:
import java.sql.*;
class DatabaseDriver{
privateintdatabaseType;
private Stringerror;
private Connectioncon;
private Statementstatement;
private ResultSetrs;
staticfinalintMYSQL_DB_TYPE = 1;
staticfinalintPGSQL_DB_TYPE = 2;
staticfinalintMSSQL_DB_TYPE = 3;
staticfinalintORACLE_DB_TYPE = 4;
public DatabaseDriver (int dbType){
databaseType = dbType;
try{
switch (dbType){
case MYSQL_DB_TYPE:
Class.forName("com.mysql.jdbc.Driver").newInstance();
break;
case PGSQL_DB_TYPE:
Class.forName("org.postgresql.Driver").newInstance();
break;
case MSSQL_DB_TYPE:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
break;
case ORACLE_DB_TYPE:
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
break;
}
}catch (Exception e){
error ="could not load driver";
}
}
publicboolean connect (String server, String user, String password){
try{
con = DriverManager.getConnection("jdbc:mysql://" + server +"?user=" + user +"&password=" + password);
}catch (Exception e){
error ="could not connect to the database";
returnfalse;
}
returntrue;
}
publicboolean execQuery (String query){
try{
statement = con.createStatement();
if (statement.execute(query)){
rs = statement.getResultSet();
}
while (rs.next()){
System.out.println(rs.getString("1") +"\t" + rs.getString("2"));
}
rs.close();
rs =null;
statement.close();
statement =null;
}catch (Exception e){
error = e.toString();
e.printStackTrace();
returnfalse;
}
returntrue;
}
public String getError (){
return error;
}
publicboolean disconnect (){
returntrue;
}
}
class Test{
publicstaticvoid main (String[] args){
DatabaseDriver db =new DatabaseDriver(1);
db.connect(args[0],args[1],args[2]);
db.execQuery("USE " + args[3] +";");
db.execQuery("SELECT * FROM te;");
System.out.println(db.getError());
}
}
I receive this in the printout:
java.lang.NullPointerException
at DatabaseDriver.execQuery(DatabaseDriver.java:61)
at Test.main(Test.java:7)
bla1bla2
bla6bla7
java.lang.NullPointerException
Line 61
while (rs.next()) {
I have read a lot of other posts that say that the connection object is null or the recordset is empty, but it seems that neither of those are the case considering I am able to printout the two rows properly.
Can someone please explain to me what I am doing wrong and how to fix it?
Thanks

