Announcement

Collapse
No announcement yet.

NullPointerException bei Zugriff auf DB von Servlets/JSPs

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • NullPointerException bei Zugriff auf DB von Servlets/JSPs

    Hallo,

    zuerst möchte ich darauf hinweisen, daß meine Kenntnisse doch recht bescheiden sind. Ich arbeite zwar an einer Projektarbeit, aber ich möchte hier darum betteln, daß man mir die ganze Arbeit abnimmt, ich hänge bloss grad und weiß nicht weiter, also...los gehts

    Datenbank ist vorhanden, und ich habe ne eigen Klasse für die Verbindung zur DB:
    Code:
    public class DBVerbindung {
    
        public static Connection getConnection() {
            String server = "localhost:5433";
            String dbname = "postgres";
            String nutzer = "postgres";
            String passwort = "postgres";
            String url = "jdbc:postgresql://" + server + "/" + dbname;
            Connection con = null;
            try {
                Class.forName("org.postgresql.Driver");
                con = DriverManager.getConnection(url, nutzer, passwort);
            } catch (ClassNotFoundException exc) {
                System.out.println(exc.getMessage());
            } catch (SQLException exc) {
                System.out.println(exc.getMessage());
            }
            return con;
        }
    }
    Dies ist eine normale Java-Klasse. Wenn ich folgenden Code aus dieser Klasse heraus (Test-Methode) ausführe, kann ich auf die Datenbank zugreifen.
    Code:
    public static void test() {
        	String username = "mmuster";
        	String password = "init";
        	String statement =
    			"SELECT benutzername, passwort FROM Benutzer "
    			+ "WHERE benutzername = ? AND passwort = ?";
        	System.out.println("Connect");
        	Connection con = getConnection();
        	System.out.println(con);
        	PreparedStatement stmt;
    		try {
    			stmt = con.prepareStatement(statement);
    			stmt.setString(1, username);
    	    	stmt.setString(2, password);
    	    	//Statement stmt = con.createStatement();
    			ResultSet rs = stmt.executeQuery();
    	    	//System.out.println(rs.getString(1));
    	    	while (rs.next()) {
    	    		System.out.println(rs.getString(1) + rs.getString(2));
    	    	}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
        	
        	
        }
    Hab halt zum Testen paar Konsoleneingaben eingebaut.

    DAS PROBLEM:
    Möchte ich von einem Servlet oder JSP oder Tag-Handler-Klasse darauf zugreifen bekomme ich bei folgender Zeile immer eine NullPointerException:
    Code:
    stmt = con.prepareStatement(statement);
    Ich habe leider keine Ahnung woran das liegen kann. Ich habe die Vermutung, daß es irgendwie mit dem Server zusammen hängen kann. Starte ich aus der Klasse heraus, dann läuft es ja anscheindend nicht auf dem Server, bei JSP etc. aber wird ja vorher der Server gestartet.

    Weiß jemand BITTE Rat?

    Übrigens: Benutzt wird Eclipse, Apache Tomcat und PostgreSQL.

    Vielen Dank!

  • #2
    Woher nimmst du die Connection?

    Es empfiehlt sich in einer Webanwendung diese in einer Singeltonklasse anzulegen und auf diese dann zuzugreifen
    Christian

    Comment


    • #3
      Die Methode getConnection() ist ja in einer Extra-Klasse. Der 2. Codeausschnit, wo die Connection geholt wird sieht bei einer JSP etc etwas anders aus:

      Connection con = DBVerbindung.getConnection();

      Meintest du das mit "woher nimmst du..."?

      Nachtrag:
      Durch ein paar Konsolenausgaben kann ich sagen, daß ich KEINE Verbindung bekommen, also con = null, wenn ich etwas auf dem Server laufen lasse(Run on Server), starte ich die Test-Methode aus der Verbindungsklasse läuft die ja auf die herkömmliche Art, also nicht auf dem Server. Merkt man auch daran, daß dann der Server nicht wirklich startet.
      Zuletzt editiert von pathde; 21.04.2010, 21:40.

      Comment

      Working...
      X