Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ResultSet.next() throws NullPointerException

843859Jul 11 2007 — edited Jul 13 2007
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
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 10 2007
Added on Jul 11 2007
4 comments
2,579 views