Hello,
When running the following code:
import java.sql.*;
class DatabaseDriver {
private int databaseType;
private String error;
private Connection con;
private Statement statement;
private ResultSet rs;
static final int MYSQL_DB_TYPE = 1;
static final int PGSQL_DB_TYPE = 2;
static final int MSSQL_DB_TYPE = 3;
static final int ORACLE_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";
}
}
public boolean 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";
return false;
}
return true;
}
public boolean 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();
return false;
}
return true;
}
public String getError () {
return error;
}
public boolean disconnect () {
return true;
}
}
class Test {
public static void 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)
bla1 bla2
bla6 bla7
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