# Applet+Datenbank



## pikus (6. Februar 2008)

hallo

gibts eine Möglichkeit für mein Applet Programm eine Datenbank zu verwenden

hatte es schon mit mysql versucht aber es sind keine externe Zugriffe möglich.
ich brauch eine Datenbank um paar Links zuspeichern und die dann spaeter auch zu veraendern

DANKE


----------



## MeinerEiner_80 (6. Februar 2008)

Moin!
Prinzipiell hat das nichts mit der Datenbank zu tun. Ist sie entsprechend konfiguriert, sind da auch Verbindungen von ausserhalb möglich. 
Restriktionen in dieser Konfiguration kann aber der dein Webspace Anbieter einbauen. Du solltest mal deinen Anbieter fragen, ob es denn bei ihm möglich ist... Falls nein, musst du dir halt einen anderen suchen..

*grüssle*
MeinerEiner


----------



## pikus (6. Februar 2008)

ich hab ja ein kostenloses webspace bei funpic und sie würden das bestimmt nicht machen

und sonst bei anderen müsste ich glaub ich bezahlen das ich aber nicht möchte, weil das nur ein schul Projekt ist

gibt es keine andere Möglichkeit


----------



## MeinerEiner_80 (6. Februar 2008)

Moin!


pikus hat gesagt.:


> und sonst bei anderen müsste ich glaub ich bezahlen


Glauben ist nicht wissen. Wie gesagt, informiere dich halt mal!

*grüssle*
MeinerEiner


----------



## pikus (6. Februar 2008)

doch ich weiß es 
es würde ja nur gehen wenn ich mir ein Server kaufen würde

deswegen such ich jetzt ja eine Alternative zu Mysql


----------



## MeinerEiner_80 (6. Februar 2008)

Normalerweise ist es ja auch so, das man einem Applet bei einer WebAnwendung nicht direkt Zugriff auf die Datenbank gewährt, sondern das über eine Mittlerschicht tut. Also beispielweise sendet das Applet die Daten an ein Servlet oder ein PHP-Skript und diese führt dann die nötigen Datenbankoperationen aus....

Über weitere Alternativen kann ich/können wir dir kaum Auskunft geben. Ich weis zwar was du ungefährt machst, aber was du für Anforderungen hast, hab ich keine Ahnung...

*grüssle*
MeinerEiner


----------



## zerix (6. Februar 2008)

Hallo,

also, wenn du auf eine Datenbank zugreifen möchtest, brauchst du einen Server auf dem eine Datenbank läuft. Wenn du selbst keinen hast und dein WebSpace-Anbieter das nicht anbietet, bleibt dir meiner Meinung nach keine Möglichkeit offen.

MFG

zEriX


----------



## pikus (6. Februar 2008)

ich hab jetzt einenen kostenlosen Anbieter gefunden, der eine externe Datenbank zu verfügung stellt (sql-for-free.de)

aber es funktioniert immer noch nicht

die gannzen Daten
User: maimiman
Passwort: ******
Datenbankname: _85_
Datenbankserver: sql-for-free.de
Port: Standard oder 3306

java

```
import java.io.*;
import java.sql.*;

/**
 *
 * @author info
 */
public class datenbank1 {
    Connection conn = null;
    Statement stm = null;
    ResultSet rslt = null;
    /** Creates a new instance of datenbank1 */
    public datenbank1() {
        try{
            Class.forName("com.mysql.jdbc.Driver");
        } catch(Exception e) {
        }
        
        try{
            conn = DriverManager.getConnection("jdbc:mysql://sql-for-free.de:3306/_85_","maimiman","******");
        } catch(Exception e) {e.printStackTrace();
        }
        
        
        try {
            stm = conn.createStatement();
            
        }catch(Exception e) {
            System.out.println("Folgender Fehler beim erstellen eines Statements :  "+e);
            e.printStackTrace();
        }
       
        
    }
    
    public ResultSet box1Ausgabe(){
        try {
            
            rslt = stm.executeQuery("Select test1 FROM test");
        } catch(Exception e) {
            System.out.println("Folgender Fehler beim erstellen der Tabelle/Inserts/Select-Anweisung :  "+e);
            e.printStackTrace();
        }
        return rslt;
    }
   
}
```

html

```
<html> <head> </head>
<body bgcolor="#EEEEEE">
<applet code="Main.class" width="1000" height="1000" archive="mysql-connector-java-5.1.5-bin.jar"> </applet></body>
</html>
```



Fehlermeldung


```
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(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	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:2104)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:729)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	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:283)
	at java.sql.DriverManager.getConnection(DriverManager.java:582)
	at java.sql.DriverManager.getConnection(DriverManager.java:185)
	at datenbank1.<init>(datenbank1.java:20)
	at Main.<init>(Main.java:40)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at sun.applet.AppletPanel.createApplet(AppletPanel.java:778)
	at sun.plugin.AppletViewer.createApplet(AppletViewer.java:2045)
	at sun.applet.AppletPanel.runLoader(AppletPanel.java:707)
	at sun.applet.AppletPanel.run(AppletPanel.java:361)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.security.AccessControlException: access denied (java.net.SocketPermission sql-for-free.de resolve)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkConnect(SecurityManager.java:1031)
	at java.net.InetAddress.getAllByName0(InetAddress.java:1128)
	at java.net.InetAddress.getAllByName0(InetAddress.java:1109)
	at java.net.InetAddress.getAllByName(InetAddress.java:1072)
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:246)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2027)
	... 24 more
Folgender Fehler beim erstellen eines Statements :  java.lang.NullPointerException
java.lang.NullPointerException
	at datenbank1.<init>(datenbank1.java:26)
	at Main.<init>(Main.java:40)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at sun.applet.AppletPanel.createApplet(AppletPanel.java:778)
	at sun.plugin.AppletViewer.createApplet(AppletViewer.java:2045)
	at sun.applet.AppletPanel.runLoader(AppletPanel.java:707)
	at sun.applet.AppletPanel.run(AppletPanel.java:361)
	at java.lang.Thread.run(Thread.java:619)
Folgender Fehler beim erstellen der Tabelle/Inserts/Select-Anweisung :  java.lang.NullPointerException
java.lang.NullPointerException
	at datenbank1.box1Ausgabe(datenbank1.java:39)
	at Main.init(Main.java:130)
	at sun.applet.AppletPanel.run(AppletPanel.java:417)
	at java.lang.Thread.run(Thread.java:619)
java.lang.NullPointerException
	at Main.init(Main.java:132)
	at sun.applet.AppletPanel.run(AppletPanel.java:417)
	at java.lang.Thread.run(Thread.java:619)
```


----------



## zerix (6. Februar 2008)

Da steht doch, dass der Zugriff nicht erlaubt wurde. Entweder ist der account nicht frei geschaltet oder deine Daten stimmen nicht, würde ich jetzt einfach mal sagen.

MFG

zEriX


----------



## MeinerEiner_80 (6. Februar 2008)

Datenbank und Applet liegen auf demselben Server?


----------



## pikus (6. Februar 2008)

nein sie liegen nicht auf dem gleichen server
sql-for-free.de ist nur ein Mysql server

mein account wurde schon freigeschaltet

wie sieht es aus mit einer zwischenschicht


> sondern das über eine Mittlerschicht tut. Also beispielweise sendet das Applet die Daten an ein Servlet oder ein PHP-Skript und diese führt dann die nötigen Datenbankoperationen aus....


hat jemand ein Beispiel dafür?


----------



## MeinerEiner_80 (6. Februar 2008)

pikus hat gesagt.:


> nein sie liegen nicht auf dem gleichen server
> sql-for-free.de ist nur ein Mysql server


Ein Applet kann nur eine Verbindung zu dem Server aufbauen kann, auf dem es auch gehostet wird!

Für die andere Vorgehsweise finden sich massenhaft Beispiele im Netz, wie wärs hiermit
http://www.vorlesungen.uni-osnabrueck.de/informatik/javaapi/servlets/node17.html


----------



## pikus (6. Februar 2008)

hast du auch ein Beislpiel für die php Methode?
hab nichts darüber gefunden
und da ich mich mal mit php beschaeftigt habe waere das einfacher für mich


DANKE


----------

