NullPointerException bei Ausführung eines SQL Statements

fastfiler

Mitglied
hi,

ich hab mir hier aus dem forum eine klasse geklaut die eine Datenbankverbindung herstellt. Sobald ich ein Objekt der klasse erzeuge, die connection herstelle und anschließend ein sql statement ausführe krieg ich immer ne nullpointerexception.

hier mal der code

Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class Database {
	
	private Connection conn = null;
	private Statement stmt;
	private ResultSet rs;
	private ResultSetMetaData rsmd;
	
	public void connect() {
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			//conn = DriverManager.getConnection("jdbc:odbc:database", null, null);
			
			
			this.stmt = this.conn.createStatement();
			
		} catch (SQLException sqle) {
			System.out.println("SQLException: " + sqle.getMessage());
			System.out.println("SQLState: " + sqle.getSQLState());
			System.out.println("VendorError: " + sqle.getErrorCode());
			sqle.printStackTrace();

		}

	}
	
	public ResultSet executeSQL(String sqlStatement) //SQL Statement ausführen
	    {
	        try {
	            this.stmt=connection.createStatement();         
	            return stmt.executeQuery(sqlStatement);
	        }
	        catch(SQLException e){
	            System.out.println(e.getSQLState());
	        }
	        return null;
    }


Code:
import java.sql.ResultSet;
import java.sql.SQLException;

public class Main {
    
    public Main() {
    }

    public static void main(String[] args) throws Exception {
    	
    	ResultSet rs;
    	Database db = new Database();  	
    	db.connect();   	
    	rs=db.executeSQL("select * from table;");	
      }
}


warum die exception geworfen wird versteh ich nich so ganz - abfängen lässt sie sich auch nicht.

mit einer mysqldatasource klappt es - das problem ist nur ich brauch eine verbindung zu einer access db, für die es meine wissens nach keine datasource gibt.


weiss jmd zufällig warum?
 
Entferne mal den Kommentar vor 'conn = DriverManager.getConnection(...'
Du initialisierst das Connection-Objekt nicht, also kann ein Aufruf desselben nur zu einer NullPointer-Exception führen...

Schönen Abend noch

Alexander Schell
 
egal aus welcher datenbank ich lese, access oder mysql. sobald ich ein objekt der klasse erzeuge und die methode aufrufe erhalte ich die exception.

ich habs jetzt über die datasource gemacht
 
Du solltest vielleicht auch erstmal das hier ändern:

Code:
  public ResultSet executeSQL(String sqlStatement)  { //SQL Statement ausführen
  
  		try {
  
 		 // Hier stand erst 'this.statement=connection.createStatement()'...deine Klasse kennt aber kein solches
  			this.stmt=conn.createStatement();
  			
  			return stmt.executeQuery(sqlStatement);
  
  		} catch(SQLException e){
  
  			System.out.println(e.getSQLState());
  
  		}
  
  		return null;
  	}

Ich hab' den Code mal kopier und bei mir ausprobiert...funktioiniert ohne Probleme nach der oben angeführten Änderung.

mfG

Alexander Schell
 
Zurück