# Datenbankzugriff per Applet - Problem beim Treiber laden



## andy_y (26. Sep 2006)

Hi,
ich hab ein kleines Applet geschrieben, auf dem ich zeichnen und schreiben kann. Das ganze soll ins Internet, sodass mehrere Leute darauf rummalen können. Die Daten (Koordinaten usw.) wollte ich in ner Datenbank speichern. Mit JDBC hab ich allerdings ein paar Probleme, vor allem beim Laden der Treiber. 
Ich hab mich dabei am EBook "Java ist auch eine Insel" von Galileocomputing orientiert.
Dort steht zum Beispiel geschrieben, dass man Treiber per:

```
Class.forName( DatabaseConstants.DRIVER );
  Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
```
lädt. Allerdings krieg ich beim compilieren die Meldung, dass er mit dem "DatabaseConstants.DRIVER" nichts anfangen kann. Wenn ichs weglasse wirds ohne Fehler compiliert, aber Daten werden trotzdem nicht, wie gewollt, in die Datenbank geschrieben. Ich habs auch schon mit anderen Klassennamen für JDBC-Treiber probiert, aber es hat alles nicht funktioniert. (Ich hab natürlich bei DriverManager.getConection() das Subprotokoll zum jeweiligen Klassennamen verwendet.)
Hab bei mir dan Apache (Xampp 1.4.11) installiert.
Was mache ich falsch? Und wie gehts richtig?

Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken.

Auf jeden Fall schon mal danke für eure Hilfe


----------



## bronks (26. Sep 2006)

Es funktioniert grundlegend so, wie es in Deinem Buch in Kapitel 20.6. beschrieben ist. Dein o.g. CodeBeispiel geht schon ein Kapitel zu weit.

Um Frust zu vermeiden: Erzähl uns was für eine DB dahinter steckt und ob Du Dein Applet ins Internet setzen willst.


----------



## andy_y (26. Sep 2006)

Du meinst so wie in dem Beispiel? Und warum gibts da nur eine Class.forName()-Anweisung und im nächsten Kapitel 2?
Ich habe übrigens MySQL. Und ins Internet wollte ich das dann auch stellen, wenns denn mal fertig wird.


----------



## bronks (26. Sep 2006)

Das mit den 2 Class.forName() ist nur als Beispiel, wie man in einer Klasse seine Parameter halten kann. Beide Class.forName() machen genau das gleiche.

Hab ich es mir doch gedacht. Du mußt darauf achten, daß Dein WebspaceProvider Remotezugriff auf die Datenbank erlaubt, was aus Sicherheitsgründen sehr selten ist. Sonst kommst Du aus dem Servlet nicht auf die DB. Im Notfall kann man die Daten auch per HTTP übergeben und auf der Serverseite erledigt die Datenbankarbeit ein Servlet oder ein PhpScript, was zu o.g. einiges zur Sicherheit Deiner DB beitragen würde.


----------



## andy_y (28. Sep 2006)

ich hab das applet ja noch gar nicht ins netz gestellt, ich wollte es erstmal so testen, damit ich nich immer ins web und die dateien hochladen muss.
und wenn es mit beiden class.forname varianten geht dann hab ichs richtig gemacht, krieg die daten aber trotzdem nich in die db rein. wie gesagt ich hab den apach und da is ja mysql drin. muss dann die treiber extra nochmal runterladen, so wie's in kapitel 20.5 in "java ist auch eine insel" beschrieben wird? wenn ja, warum?


----------



## sec4all (28. Sep 2006)

Hallo, versuch es mal damit:


```
private String error="";
    /**
     * stellt eine Verbindung zur MySQL DB her
     */
    public boolean getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://SERVERIP:PORT/DBNAME", "USER", "PWD");
            Statement statement = con.createStatement();
        }
        catch (ClassNotFoundException e) {
            error = "ConnectionDB: Datenbanktreiber konnte nicht gefunden werden!
";
            error = error + e;
        }
        catch (SQLException e) {
            error = error + "ConnectionDB: Verbindung nicht moeglich!
";
            error = error + e;
        }
        return connection;
    }
    /**
     * gibt die Fehlermeldungen aus
     */
    public String getAusgabe() {
        return ausgabe;
    }
```

Gruß
Sec4all
Homepage


----------



## Guest (1. Okt 2006)

ich werds versuchen.
auf jeden fall vielen dank für eure hilfe


----------

