# Datenbankverbindung mit einer Datenbank auf einem Webspace



## Anyone (4. Dez 2009)

Guten Abend,

ich muss mein lokales Javaprogramm mit einer externen Datenbank (auf einem Webspace) verbinden. Leider bekomme ich jedoch ständig eine NullPoninterException. Der Datenbankaufbau sieht bei mir folgendermaßen aus:


```
import java.sql.*;

public abstract class ConnectionFactory
{
    public static Connection createConnection(String driver, String url, String databaseUser, String databasePassword)
    {
        // Datenbankverbindungsveriable
        Connection linkID = null;
        
        try
        {
            // Initiierung des JDBC-Treibers
            Class.forName(driver).newInstance();
        }
        catch (Exception e) // Der JDBC-Treiber konnte nicht initiiert werden.
        {
            Registry.getInstance().getExceptionHandler("Default").handleException(e, new DefaultExceptionGUI(Registry.getInstance().getMessageDisplay("Default")));
        }

        try
        {
            // Versuch, eine Datenbankverbindung zu initiieren
            linkID = DriverManager.getConnection(url, databaseUser, databasePassword);
        }
        catch (SQLException e) // Die Datenbankverbindung konnte nicht aufgebaut werden.
        {
            Registry.getInstance().getExceptionHandler("SQL").handleException(e, new DefaultExceptionGUI(Registry.getInstance().getMessageDisplay("Default")));
        }
        
        // Die Datenbankverbindung wird zurückgeliefert
        return linkID;
    }
}
```


```
ConnectionFactory.createConnection("com.mysql.jdbc.Driver", "jdbc:mysql://db4.x.de:3306/databasename", "user", "password")
```

Kann man auf diese Weise überhaupt mit einer externen Datenbank in verbindung treten?


----------



## Michael... (4. Dez 2009)

Wie lautet die Fehlermeldung und in welcher Zeile tritt sie auf?

Weiss zwar nicht, was Deine ExceptionHandler da so treiben, aber lass Dir mal mal den StackTrace ausgeben:

```
e.printStackTrace();
```


----------



## Anyone (4. Dez 2009)

Folgendes wird mir angezeigt...







PS: Mit meiner lokalen MySQL Datenbank funktioniert das...


----------



## Michael... (4. Dez 2009)

das hatte ich vermutet. Die Treiberklasse wird nicht gefunden.
Das Archiv mit dem Datenbanktreiber ist nicht (korrekt) im CLASSPATH eingebunden


----------



## Anyone (4. Dez 2009)

Habe den Connector nun in den Umgebungsvariablen geworfen:


```
.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip;C:\Users\Username\Desktop\Autoverleih\Planung\Datenbank\mysql-connector-java.zip
```

Jedoch erscheinen immernoch dieselben Fehlermeldungen


----------



## Michael... (4. Dez 2009)

kann es sein, dass das zip-File noch entpackt werden muss und das relevante Archiv sich im zip-File befindet?


----------



## Anyone (4. Dez 2009)

Michael... hat gesagt.:


> kann es sein, dass das zip-File noch entpackt werden muss und das relevante Archiv sich im zip-File befindet?



In dem Connector-Archiv ist kein weiteres Archiv


----------



## Michael... (4. Dez 2009)

Hab mich nur gewundert, da Java Archive in der Regel die Endung jar haben.

Aber wenn sich darin die Klasse com.mysql.jdbc.Driver befindet und Du den CLASSPATH vor/bei dem Starten des Programms korrekt setzt, dürfte nicht die gepostete Fehlermeldung auftreten.


----------



## Anyone (4. Dez 2009)

Michael... hat gesagt.:


> Hab mich nur gewundert, da Java Archive in der Regel die Endung jar haben.
> 
> Aber wenn sich darin die Klasse com.mysql.jdbc.Driver befindet und Du den CLASSPATH vor/bei dem Starten des Programms korrekt setzt, dürfte nicht die gepostete Fehlermeldung auftreten.



Hmmm.. dennoch kommt die Fehlermeldung leider


----------



## Michael... (7. Dez 2009)

Sorry, wenn ich noch mal so blöd nachfrage:
Also, in dem zip-File befindet sich tatsächlich eine Datei *Driver.class*?

Ich habe mir jetzt das offizielle Paket von  der mySQL Seite runtergeladen. Bekommen habe ich eine Datei:
mysql-connector-java-5.1.10.zip
und erst darin enthalten ist die 
mysql-connector-java-5.1.10-*bin.jar*
welche die notwendigen Klassen enthält.
Was mich an der von Dir im ClassPath eingebundenen Datei jetzt irritiert ist - wie bereits schon erwähnt - die Endung zip (die zwar nicht problematisch aber untypisch ist) und, dass da nirgends das *bin* im Dateinamen auftaucht. 
Woher ist den das zip-File?


----------



## homer65 (7. Dez 2009)

Michael... hat gesagt.:


> Sorry, wenn ich noch mal so blöd nachfrage:
> Also, in dem zip-File befindet sich tatsächlich eine Datei *Driver.class*?
> 
> Ich habe mir jetzt das offizielle Paket von  der mySQL Seite runtergeladen. Bekommen habe ich eine Datei:
> ...


Das ist schon ok. Aber in den CLASSPATH gehört die ...jar Datei.


----------

