[JSP / Oracle] Problem bei DB-Zugriff

bene23

Lt. Junior Grade
Registriert
Nov. 2003
Beiträge
390
Hallo, habe ein 'komisches' Problem...

Möchte von einer JSP-Seite eine Verbindung zu einer Oracle-DB herstellen. Die Methoden hierfür habe ich in eine Klasse 'ConnectToDB' ausgelagert. Wenn ich die DB-Verbindung mit der 'main'-Methode der Klasse herstelle, dann funktioniert alles ohne Probleme. Nur wenn ich von der JSP aus auf die einzelnen Funktionen zugreife, dann bekomm ich jedesmal eine Java.lang.NullPointerException...

Hier erstmal der Code der Klasse ConnectToDB:

Code:
package database;

import java.sql.Connection;
import java.sql.DriverManager;
import oracle.jdbc.*;

public class ConnectToDB {
    
    private static Connection conn;
    private static String host = "blablabla";
    private static String user = "user";
    private static String pwd = "pwd";
    private static boolean code = false;
    
    /** Creates a new instance of ConnectToDB */
    public ConnectToDB (){
    }

    public static void main (String args[]){
        code = loadDriver();
        conn = getDBConnection();
        code = closeDBConnection();
    } // main
    
    /**
     * läd den Treiber
     *
     * @return <code>true</code> bei Erfolg, sonst <code>false</code>
     */
    public static boolean loadDriver (){
        try{
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        }
        catch(Exception ex){
            System.out.println("Fehler beim Laden des Datenbank-Treibers (ConnectToDB.loadDriver()): " + ex);
            return false;
        } // catch
        catch(NoClassDefFoundError er){
            System.out.println("Klasse nicht gefunden (ConnectToDB().loadDriver())! " + er);
            return false;
        } // catch
        System.out.println("Treiber wurde erfolgreich geladen!");
        return true;
    } // loadDriver
    
    /**
     * Stellt die Verbindung zur Datenbank her
     *
     * @return <code>Connection</code> bei Erfolg, sonst <code>null</code>
     */ 
    public static Connection getDBConnection(){
        try{
            // HIER TRITT DER FEHLER AUF
            [COLOR="Red"]conn = DriverManager.getConnection("jdbc:oracle:thin:@" + host, user, pwd);[/COLOR]
        } // try
        catch (Exception ex){
            System.out.println("Fehler beim Verbindungsaufbau zur Datenbank (ConnectToDB().getDBConnection())! " + ex);
            return null;
        } // catch
        catch (NoClassDefFoundError er){
            System.out.println("Es ist ein unbekannter Fehler aufgetreten (ConnectToDB().getDBConnection())! " + er);
            return null;
        } // catch
        return conn;
    } // getConnection()
    
    /**
     * Trennt die Datenbankverbindung
     *
     * @return <code>true</code> bei Erfolg, sonst <code>false</code>
     */
    public static boolean closeDBConnection(){
        try{
            conn.close();
        } // try
        catch (Exception ex){
            System.out.println("Fehler beim Trennen der Datenbankverbindung (ConnectToDB().closeDBConnection())! " + ex);
            return false;
        } // catch
        return true;
    } // closeDBConnection()
} // class

Wie gesagt, wenn ich ConnectToDB alleine ausführe, dann funktioniert alles. Rufe ich jetzt das Ganze aber aus der JSP auf, dann gibts einen Fehler.

Hier der Code der JSP:
Code:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="database.ConnectToDB, java.sql.Connection, java.sql.DriverManager, oracle.jdbc.*"%>
<%!
    ConnectToDB db;
    boolean driverLoad = false;
    boolean closeConn  = false;
    Connection conn = null;
%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <h1>JSP Page</h1>

<%
    db = new ConnectToDB();
    driverLoad = db.loadDriver();

    if (driverLoad == false){
        out.println("Fehler beim Laden des DB-Treibers!\n");
    } // if
    else{
        // HIER GIBTS DEN FEHLER
        [COLOR="Red"]conn = db.getDBConnection();[/COLOR]
    } // else
    
    if (conn != null){
        out.println("DB-Verbindung erfolgreich aufgebaut!\n");
    } // if

    closeConn  = db.closeDBConnection();
    if (closeConn == true){
        out.println("DB-Verbingund erfolgreich getrennt!\n");
    } // if
    else{
        out.println("Fehler beim Trennen der DB-Verbindung aufgetreten!\n");
    } // else
%>

    </body>
</html>

So, ich hoffe irgendjemand kann mir weiterhelfen... sitze schon ewig an diesem Problem und ich komme einfach auf keinen grünen Zweig...

Vielen Dank im Voraus!
MfG bene
 
So, das Problem ist gelöst... habe die 'richtige' Version der Datei 'classes12.jar' (enthält die Oracle-Klassen) als Library eingebunden... Hatte davor eine ältere Version (classes12.zip), die wohl der Grund für den Fehler war.

Komisch ist allerdings, dass es innerhalb der Klasse funktioniert hat :confused_alt: Eventuell wurden in der älteren Version JSP noch nicht unterstützt...

Naja, denke man muss auch nicht alles wissen :D


MfG
bene
 
Zurück
Oben