# Über Internet Datenbank mit Programm abrufen



## Gelöschtes Mitglied 51845 (1. Nov 2015)

Huhu Community,

ich hoffe, ich bin hier bei euch "richtig" 

Ich habe mir mittels Selbststudium Java beigebracht, zumindest die Grundlagen. Mein Programmierbuch behandelt aber leider nicht (ausreichend) das Thema Datenbanken. Es wird von vorhandenem Grundwissen in MySql ausgegangen - das bei mir leider aber nicht der Fall.
Daher wende ich mich an euch 

Ich habe ein kleines Java-Programm erstellt, das soweit wie gewünscht funktioniert. Die Daten werden aber lokal in einer Textdatei gespeichert - das möchte ich nun ändern. Die Daten sollen von mehreren Computern (nicht im selben LAN) abrufbar sein.
Ist es möglich, das ohne Kosten zu verwirklichen? Wenn nicht, dann würde ich mich trotzdem über Alternativen freuen 

Ich habe hier im Forum schon von WebServices gelesen, habe mich damit aber nicht recht zurechtgefunden.

Vielen Dank im Voraus!


----------



## Thallius (1. Nov 2015)

Wenn Du das selber machen willst, dann wird dir aber nichts andere übrig bleiben als einen Webservice selber zu schreiben. Das bedeutet Wissen in mySQL und z.B. PHP aneigenen.


----------



## Gelöschtes Mitglied 51845 (1. Nov 2015)

Wissen in PHP ist kaum vorhanden, lernen wir aber gerade in der Schule 
Einen Webservice selber zu schreiben, habe ich dennoch nicht vor ^^
Was sind die anderen Möglichkeiten? Einfach einen kostenpflichtigen Webservice verwenden? Brauche ich für die Verwendung eines Webservices auch noch tiefergehende MySQL Kompetenzen, oder nicht?


----------



## Thallius (1. Nov 2015)

Es gibt keine fertigen Webservices. Du must einen selber schreiben für dein Produkt.


----------



## Gelöschtes Mitglied 51845 (1. Nov 2015)

Das heißt, es ist unmöglich, ein Programm zu schreiben, das auf eine eigene Datenbank zugreift, ohne vorher ein eigenes Webservice geschrieben zu haben? Ich nehme ein Webservice zu schreiben ist komplex, nicht?


----------



## Flown (1. Nov 2015)

Nein, du kannst von deinem Programm aus natürlich auf deine Datenbank zugreifen - auch übers Internet, wenn verfügbar - mit der richtigen Adresse.


----------



## Gelöschtes Mitglied 51845 (1. Nov 2015)

Hätte mich gewundert ^^
Könntest Du das bitte näher erläutern, wie ich das machen kann?


----------



## Flown (1. Nov 2015)

Nein. Von mir gibts nur auf konkrete Fragen, konkrete Antworten. Alles andere kann man sich im Internet suchen: HIER zum Beispiel beim offiziellen Tutorial.


----------



## Gelöschtes Mitglied 51845 (1. Nov 2015)

Okay, dann eine konkrete Frage:
Was mache ich im Folgenden falsch?


```
package datenbank;

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

public class Datenbanktest {
    static String ConnectURL = "URL";
    static String user = "username";
    static String pw = "pw";
    static Connection conn;

    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (Exception e){
            System.err.println("Treiber konnte nicht geladen werden");
            System.err.println(e);
            e.printStackTrace();
            System.exit(-1);
        }
        System.out.println("Treiber wurde erfoglreich geladen");
        try {
            conn = DriverManager.getConnection(ConnectURL, user, pw);
            System.out.println("Funktioniert!");
        } catch (SQLException e1) {
            System.err.println("Keine Verbindung möglich");
            e1.printStackTrace();
            System.err.println("SQLException: "+e1.getMessage());
            System.err.println("SQLState: "+e1.getSQLState());
            System.err.println("VendorError: "+e1.getErrorCode());
            System.exit(-1);
        }
        System.out.println("Finished");
    }

}
```

Der Code kommt von meinem Programmierbuch. Der dürfte also soweit stimmen^^
Bei der URL hat's mich jedoch. Ich habe mir bei "bplaced.net" einen Account erstellt. Dort mittels PhpMyAdmin 2 zusammenhängende Tabellen erstellt. Exportiere ich diese beispielsweise in PDF-Format, passt die Tabelle perfekt. Wie kann ich nun auf die Tabelle zugreifen? Hätte die bei blpaced angegebene Domain bereits versucht, funktioniert aber nicht. Sieht dann so aus:

```
static String ConnectURL = "jdbc:mysql://Domain";
```
Statt "Domain" halt die Domain eingesetzt
Ergebnis ist ein Communication Link Failure

Stell mich normalerweise nicht so blöd an


----------



## Dompteur (1. Nov 2015)

Bei bplaced darfst du nicht von außerhalb auf die Datenbank zugreifen. 
Nur PHP-Programme, die auf deren Servern laufen, dürfen das.


----------



## Thallius (1. Nov 2015)

Flown hat gesagt.:


> Nein, du kannst von deinem Programm aus natürlich auf deine Datenbank zugreifen - auch übers Internet, wenn verfügbar - mit der richtigen Adresse.



Will ich sehen wie Du das machst. Meine Provider unterbinden alle direkte Zugriffe auf ihre Datenbanken. Was ja auch extrem viel Sinn macht.

Gruß

Claus


----------



## Gelöschtes Mitglied 51845 (1. Nov 2015)

Okay, das heißt, ich kann meinen Account bei bplaced gleich wieder löschen, da er mir in meinem Fall genau gar nichts bringt?
Gibt es solche Anbieter, wo das funktioniert, oder ist der ganze Ansatz falsch?


----------



## Flown (1. Nov 2015)

Thallius hat gesagt.:


> Will ich sehen wie Du das machst. Meine Provider unterbinden alle direkte Zugriffe auf ihre Datenbanken. Was ja auch extrem viel Sinn macht.


Darum die Klausel


Flown hat gesagt.:


> auch übers Internet, wenn verfügbar


----------



## Dompteur (1. Nov 2015)

Christof1 hat gesagt.:


> Gibt es solche Anbieter, wo das funktioniert, oder ist der ganze Ansatz falsch?


Ja, es gibt solche Anbieter. Hier 2 Beispiele:
* http://www.db4free.net/index.php?language=de : nur zum Testen
* http://www.freemysqlhosting.net/

Ich habe die beiden schon länger auf meiner Liste, habe sie aber noch nicht ausprobiert ;-).

Generell versucht man aber aus Security-Gründen eine Datenbank nicht offen im Internet zugreifbar zu haben, sondern hinter einem Applikationserver zu verstecken.


----------



## Gelöschtes Mitglied 51845 (1. Nov 2015)

Ja, ich versuche gerade eine PHP Seite zu schreiben, mit welcher ich die Tabelle ausgeben lassen möchte. Dann mit dem Java Programm auslesen.
Habe jedoch immer als Fehlermeldung "Connection timed out" in der Zeile, wo 
	
	
	
	





```
$link = mysqli_connect($server, $username, $passwort);
```
 steht.


----------



## Gelöschtes Mitglied 51845 (1. Nov 2015)

Eine Frage hätt ich noch  :
Wie schaffe ich es dann, Daten der Datenbank zu ändern? Neue hinzuzufügen?


----------



## Flown (1. Nov 2015)

Mit `insert` würde ich mal starten.


----------



## Dukel (1. Nov 2015)

Ich würde, wenn mir noch das Know-How fehlt und ich am lernen bin, das nicht öffentlich im Internet machen sondern einen Server lokal (z.B. als VM) erstellen.
Was ist denn dein Ziel des ganzen? Was soll das Java Programm machen? Warum muss die DB im Internet stehen?


----------

