# Fehler bei Verbindungsaufbau zu MySql DB



## Terra (29. Apr 2008)

Hallo Java Community!

Wie man an meinem "Registrationsdatum" eventuell sehen kann, bin ich noch komplett neu hier im Forum. Seit 2 Tagen such ich mich nun aber durch das Forum und Google um eine Möglichkeit zu finden mit meinem Applet auf die MySQL Datenbank auf meinem kleinen Webspace (leider kein eigener sondern Ohost.de Webspace ) zu zu greifen. Nach einigen Ratschlägen und ähnlichem, habe ich nun mein Jar File Signiert, das .jar-File der Connector Klasse geladen und bin nun soweit, dass der Treiber geladen wird.

Das Problem liegt dann beim Aufbauen der Verbindung:


```
Treiber erfolgreich geladen

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at Datenbank.Database.connect(Database.java:53)
	at GUI.GUI.jBCreateActionPerformed(GUI.java:700)
	at GUI.GUI.access$200(GUI.java:20)
	at GUI.GUI$3.actionPerformed(GUI.java:596)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:3306 connect,resolve)
	at com.mysql.jdbc.StandardSocketFactory.unwrapExceptionToProperClassAndThrowIt(StandardSocketFactory.java:404)
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:265)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:280)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2026)
	... 39 more
```

Quellcode der Klasse Database:


```
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

/**
 *
 * @author 
 */
public class Database {
    
    private Connection con = null;
    private Statement sqlStatement = null;
    private ResultSet resultSet = null;

    public Database(){
        //connect();
    }

    
    public void connect() {
        try
	{
	    //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  // Für lokale access datenbank
            Class.forName("com.mysql.jdbc.Driver");
	    System.out.println("Treiber erfolgreich geladen");
	}
	catch(Exception exc)
	{
            exc.printStackTrace();
	    System.out.println("Fehler beim Laden des Treibers");
	}
	try
	{

            
            //con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=daten.mdb"); // für Zugriff auf Access Datenbank
	    con = DriverManager.getConnection("jdbc:mysql://localhost/*Datenbank*","*Benutzer*","*Passwort*");
            //con = DriverManager.getConnection("jdbc:mysql://localhost/daten","root",""); //lokale Datenbank
            System.out.println("Datenbank erfolgreich geladen");
	}
	catch(Exception exc)
	{
            exc.printStackTrace();
	    System.out.println("Fehler beim Laden der Datenbank");
	}
	try
	{
	    sqlStatement = con.createStatement();
	    System.out.println("SQL-Statement erfolgreich erzeugt");
	}
	catch(Exception exc)
	{
            exc.printStackTrace();
	    System.out.println("Fehler beim Erstellen des SQL-Statements");
	}
        
    }
    
    
    public ResultSet getResult(String sql)
    {
	try
	{
	    resultSet = sqlStatement.executeQuery(sql);
	}
	catch( Exception exc )
	{
	    System.out.println("Fehler bei der Abfrage der Datenbank: " + exc);
	}
	return resultSet;
        
    }
    
    public void disconnect() {
        try {
            con.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

}
```

EDIT: Zu Hause läuft es einwandfrei, nur auf dem Webspace tritt das Problem auf.


Ich hoffe ihr könnt mir weiterhelfen und danke schon im Vorraus für Hilfestellungen. 
Sollte noch irgendwas zur lösung des Problems beitragen, bitte einfach posten.

Mfg Terra


----------



## ARadauer (29. Apr 2008)

```
con = DriverManager.getConnection("jdbc:mysql://localhost/*Datenbank*","*Benutzer*","*Passwort*");
```
versuch mal die adresse des db server. das applet läuft im browser, also ist localhost dein rechner.

versuch dich mit irgendeinem freeware mysql admin tool (sqlyog) auf den server zu verbinden, wenn du das schaffst kannst du diese einstellungen hier versuchen


----------



## Terra (29. Apr 2008)

ARadauer hat gesagt.:
			
		

> versuch dich mit irgendeinem freeware mysql admin tool (sqlyog) auf den server zu verbinden



Habe ich gerade eben probiert und es funktioniert nicht. Bei diesem Freehoster habe ich aber auch gerade die Antwort schriftlich gefunden:

"Bitte beachte, dass ein externer Zugriff auf die Datenbank nicht möglich ist. "


----------



## Terra (30. Apr 2008)

Bedeutet das nun, dass dieses Applet mit der MySQL Datenbank überhaupt nicht auf diesem Server laufen wird? Sollte dies der Fall sein, konnte man mir vielleicht eine lokale Datenbank empfehlen? Ich habe bereits von HSQLDB und Anderen Datenbanken gelesen, weis aber nicht in wie fern diese zu empfehlen sind.

Danke aber schonmal für die schnelle Antwort ARadauer


----------



## Terra (30. Apr 2008)

Ok das Ganze hat sich nun mittlerweile erledigt. Ich habe ein Projekt gefunden, das sich jpmdbc (Java to Php to Mysql Database Connection) nennt und wie der Name schon sagt, kann man die Sperrung externer Zugriffe umgehen indem die Php Datei als Datenquelle benutzt wird. Es ist nicht so schnell wie eine Lokale Datenbank vielleicht wäre, reicht aber für meine Zwecke vollkommen aus.

Gruß Terra


----------

