Fehler bei Verbindung mit MySQL

flashray

Erfahrenes Mitglied
Hallo,

ich möchte aus einem Applet eine Verbindung zu MySQL herstellen und Daten ein- und auslesen.

Den Treiber - mysql-connector-java-3.1.11.jar habe ich bei Eclipse in mein Projekt eingebunden. MySQL und PHPMyAdmin ist auf meinem Webspace von meinem Provider vorinstalliert. Habe mit PHPMyAdmin eine erste Tabelle zum Testen mit ein wenig Daten erstellt. Nun möchte ich aus einem Applet auf die Daten in der Datenbank zugreifen. Ich erhalte leider eine Reihe von Fehlern mit denen ich nichts anfangen kann. Dass Applet habe ich noch nicht hochgeladen, ich starte es von meinem PC aus. Der Code stammt von "Java ist auch eine Insel" und ist entsprechend modifiziert.


Kann mir jemand Anhand der Fehlermeldung und dem Code sagen, wo vielleicht der Fehler liegen könnte?

Danke!

VG Erdal

Code:
try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			System.out.println("Fehler bei ODBC-JDBC-Bridge" + e);
			return;
		}

		Connection con;
		Statement stmt;
		ResultSet rSet;

		try {
			String url = "jdbc:mysql://XXX/dbXXX/Test";
			con =  DriverManager.getConnection(url, "dbXXX", "XXX");
			stmt = con.createStatement();

			String sqlQuery = "SELECT * FROM Name";
			rSet = stmt.executeQuery(sqlQuery);

			while (rSet.next())
				System.out
						.println(rSet.getString(1) + "\t" + rSet.getString(2));

			stmt.close();
			con.close();
		} catch (SQLException e) {
			System.out.println("Fehler bei Tabellenabfrage" + e);
			return;
		}


Fehlermeldung:

Fehler bei Tabellenabfragecom.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection timed out: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection timed out: connect
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2541)
at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at Guest.start(Guest.java:221)
at sun.applet.AppletPanel.run(AppletPanel.java:414)
at java.lang.Thread.run(Thread.java:595)


** END NESTED EXCEPTION **



Last packet sent to the server was 31 ms ago.
 
Die Fehlermeldung schaut verdächtig nach einem Verbindungsproblem zur Datenbank aus. Bist Du dir sicher dass deine Einstellungen korrekt sind, bzw. der Service der DB läuft?
 
Hört sich nach einem Verbindungsproblem an.
Wie gibst du denn die URL an?

Im Falle von MySQL--> "jdbc:mysql://HOSTNAME:PORT/DATENBANKNAME",
 
Also der Benutzername und das Passwort müssten stimmen, beim Rest bin ich mir nicht so sicher.
Als URL habe ich

jdbc:mysql://IPadresse/Datenbankname/

stehen. Auf der Seite bei PHPMyAdmin steht eine IP-Adresse, welche die Adresse zur Datenbank sein sollte. Und dann halt der Datenbankname. Mit Hostname:Port kann ich jetzt nichts anfangen, wüsste nicht wass ich dafür angeben sollte.

Noch etwas, die Daten auf der Datenbank sind doch Tabellen zugeordnet.

jdbc:mysql://IPadresse/Datenbankname/Tabellenname

Müsste es dann vielleicht so korrekt lauten?


VG Erdal
 
Jetzt seh ich das erst, so wie das oben bei dir ausschaut hast du die Tabelle oder was auch immer noch mit angegeben.

Code:
String url = "jdbc:mysql://XXX/dbXXX/Test";

was soll Test sein?

Du musst "jdbc:mysql://localhost/meinedb" angeben. "localhost" kann auch ein anderer Rechner sein (IP Adresse).
 
Test war der Tabellenname. Ich habe es sowohl mit als auch ohne Tabellenname versucht. Es hat beidemals nicht funktioniert. Localhost wäre nicht richtig, da die Datenbank auf dem Webserver von meinem Provider ist.
Stimmt den der Code überhaupt?

VG Erdal
 
Vielleicht ist ja das Problem, das mein Applet noch auf meinem Rechner liegt und noch nicht hochgeladen ist und die Datenbank nur intern zugreifbar ist. Ich werde mal mein Applet hochladen und weiterschauen.
Trotzdem vielen Dank für die Hilfe.

VG Erdal
 
Hi,

bei manchen Providern wirst Du sicher auch Probleme damit haben auf eine MySQL Datenbank zuzugreifen. Denn bei diesen funktioniert es meistens nur mit PHP.

Viel Spaß
 
Hallo!

ich denke deine MySQL Datenbankinstanz ist so, wie bei vielen anderen Hostern auch, konfiguriert, dass man sich, aus Sicherheitsgründen, nur von der selben Maschine zur Datenbank verbinden kann... (siehe entsprechende Einträge in der user-Table in der mysql DB). Entweder passt du deine Konfiguration an:
- MySQL auch für externe Rechner öffnen -> gefährlich
oder
- Du lässt auf dem Rechner eine weitere Java Applikation laufen die die Anfragen vom Applet entgegennimmt und sie an die lokale Datenbank weiterleitet. (Innerhalb der serverseitigen Java-Anwendung könntest du dann weitere Validierungen durchführen, etc.)
Die Java-Anwendung nimmt nun das Datenbank-Abfrageergebnis entgegen und schickt dies zum Applet zurück...

Gruss Tom
 
Zurück