Forum
Tipps
News
Menu-Icon

Applets und Datenbanken

Hallo allerseits,

zur Zeit arbeite ich an einem Applet, dass mit einer MySQL-Datenbank kommunizieren soll. Sofern ich das Applet in Eclipse ausführe funktioniert es. Auch im Browser und Appletviewer funktioniert es mit der Einschränkung, dass sich all diese Dinge auf meinen Computer beziehen. -> Soll heißen, dass ich versucht habe das Applet, samt Treiber (Treiberarchiv im applet-Tag angegeben) auf meinen Server zu laden und dann aus dem Web aufzurufen.

Kurzum: Auf meinem Computer sind für die Datenbank kein User/Password eingerichtet. Auf dem Server ist das allerdings der Fall.

Ergo habe ich Username/Password in die Implementierung eigefügt. Ergebnis an der Stelle: Die Datenbankverbindung steht nicht mehr.

Irgendwie scheint mir das Handling von Datenbankzugriffen mit Username/Password noch fremd zu sein. Könnt ihr mir helfen oder habt ihr eine gute Wissensquelle für mich? Ich suche schon seit 3 Tagen ohne zwingendes Ergebnis :(

Hier ist noch der entscheidende Codeausschnitt:

Class.forName( "org.gjt.mm.mysql.Driver" ).newInstance();
         String   connectionURL ="jdbc:mysql://"+"localhost"+":3306/"+table;
         Connection result = DriverManager.getConnection(connectionURL, user, password);


Antworten zu Applets und Datenbanken:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hmmm, das sieht eigentlich richtig aus. Ich weiß jetzt nicht, ob es da Treiberunterschiede gibt, ich habe immer com.mysql.jdbc.Driver verwendet. Was ist denn "table" bei dir? Eine Tabelle (das wäre an der Stelle falsch)? Oder der Name der Datenbank (das wäre korrekt)?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ist korrekt... der Bezeichner table ist an der Stelle irreführend. Es wird jedenfalls die Datenbank als String angegeben.
Das mit dem Treiber habe ich mir auch schon überlegt, allerdings habe ich testweise für meine DB auf dem Computer User/Password vergeben und da funktionierte es auch nicht. Das heißt, das Problem taucht unabhängig vom Treiber auf...

Von dem Webhoster (wenn man den so nennt) habe ich für einen Namen für die Datenbank bekommen. Dazu habe ich dann ein Passwort vergeben.

Das darf doch eigentlich nicht so schwer sein^^ Ich mache irgendeinen trivialen Fehler hmmm

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Zwischenmeldung:

Ich hab es jetzt soweit, dass ich auch eine benutzerbezogene Anmeldung zur Datenbank bekomme, allerdings nur auf dem Computer selbst.
Im Web funktioniert es noch nicht. Ich hab das ganze soweit angeglichen, dass ich nur den Datenbanknamen austauschen muss, um zu sehen wo es hakt.
Mittlerweile denke ich, dass es vielleicht doch der Treiber sein könnte.

Die MySQL Version des Hosters ist "MySQL-Client-Version: 5.0.32"

Ich habe den "mysql-connector-java-5.0.8-bin.jar" genutzt und es funktioniert nicht. Lokal läuft es noch mit "mysql-connector-java-3.0.14-production-bin.jar" und funktioniert, da ich eine ältere Version nutze.

Ich denke es ist der Treiber!?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Aber du kannst dich sonst bei der Datenbank anmelden? D.h. der DB-Server läuft und ist auf dem Webserver auch mit den angegebenen Daten zu erreichen?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ja. Das heißt über den Weblogin des Hosters kann ich mich in phpMyAdmin einloggen. Habe eben auch testweise mal eine Tabelle erstellt. Die Datenbank scheint also zu laufen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich meinte über die Commandline (hast du doch oder?):
http://www.cryer.co.uk/brian/mysql/howto_connect_using_mysql.htm
Weiß ja nicht, wie das myPHPAdmin-Zeugs den Zugriff macht.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich hab mir mal die Commandline eingerichtet^^

Nach Aufruf von: mysql -u "USER" -p "PASSWORD" -h "HOST"

kommt eine Fehlermeldung:

ERROR 2005: Unknown MySQL-Server Host "HOST" (11004)

Statt user, password und host habe ich natürlich die entsprechenden Werte eingesetzt ;-)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Und da hast du dann wahrscheinlich deine Fehlerquelle! Also mal die korrekte Host-Bezeichnung raussuchen (ggf. mit Portnummer)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ok... ich habe mal an der Adresse gefriemelt. Die vom Hoster angegebene stimmt nicht. Port ist ok.

Jetzt kommt eine andere interessante Fehlermeldung:

ERROR 1044: Access denied for user "USER"@"%" to database "PASSWORD"

Mich wundert, dass hinter "to database" auf mein Passwort referenziert wird?!

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich habe bei Passwort "-p" einfach mal den Namen der Datenbank angegeben. Da bekommt er eine Verbindung.

Ergänzung: Bei den Parametern war ich eben etwas durch den Wind - egal: die Verbindung steht. Das heißt, die DB läuft.

« Letzte Änderung: 04.10.08, 15:11:43 von Prince-Chubby »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Erstens: Sorry für den Dreifachpost^^

Ich habe meine Nachforschungen jetzt nach 5 Tagen eingestellt.

Fazit:

Laut Sun ist es möglich mit einem Applet eine Verbindung zu einer Datenbank herzustellen, sofern diese auf dem Server liegt, von welchem das Applet aufgerufen wurde.

"It cannot make network connections except to the host that it came from." (http://java.sun.com/docs/books/tutorial/deployment/applet/security.html )

Naja, bei mir geht's trotzdem nicht...

Das Testen des Quellcodes bezüglich der Datenbankverbindung hat ergeben, dass dieser vollkommen funktionstüchtig ist. Zum Test diente eine Java-Applikation.

Ich stieß auch auf folgende Information:
"Applet no longer able to connect to originating host in 1.6.0_03 with Firefox" (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6622150)
Im Klartext heißt es hier, dass Applets nicht die geschickteste Art einer Datenbankanwendung darstellen, da sie von unterschiedlichen Java-Plugins/Browsern unterschiedlich funktional interpretiert werden. Das wiederum heißt, dass die einzige Möglichkeit "Network-Connections" herzustellen nicht mehr gewehrleistet ist.

Schade eigentlich.

Beim näheren Betrachten fällt auch auf, dass die direkte Niederschrift von Zugangsdaten zur Datenbank im Appletcode durch Dekompillierung nicht sicher wären. Das Problem wäre überbrückbar, aber in der Summer ist imho das Applet nicht für DB-Interaktionen geeignet.

Da werde ich mich wohl über die Applikationsvariante hermachen^^

Schönen Sonntag und vielen Dank an Lisaa
Ich habe jetzt die Commandline^^


« bubblesortJava: aus https lesen »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Zugriffszeit
In Milisekunden angegebene Zeit, die das Speichermedium zum Erreichen der gesuchten Daten braucht. Die Zeit ist abhängig vom technischen Verfahren des Mediums sowie ...

Reaktionszeit
In der Elektronik versteht man unter der Reaktionszeit die Zeit, die ein Flachbildschirm benötigt, um die Farbe und die Helligkeit eines Bildpunktes zu ändern. ...

Applet
Siehe Java. ...