Verbindungsaufbau zu Datenbank uebers Internet

Status
Nicht offen für weitere Antworten.
W

Waduwablinki

Gast
Hallo, Ich hoffe ich habs im Richtigen Forum gepostet, da ich ja in Java auch Anfaenger bin.

Folgendes ich soll an einem Projekt mitarbeiten, bei dem Daten von einer Datenbank (Server) auf einen Client lokal am PC, uebers Netz heruntergeladen werden sollen. Wir haben uns das folgendermassen ausgedacht:

1. Datenbank auf Server <-> 2. Internetdomain, die mit PHP auf die DB zugreift (Zwischenstufe wegen Sicherheit !?) <-> 3. PC auf dem eine Java-Applikation (Client) laeuft, die Berechnungen erstellt und die Daten, auf Anfrage, eben ueber diesen Weg zur DB, beziehen soll.

Soweit die Theorie, ich soll nun bei dem Client die Verbindungsgeschichte zum Internet programmieren, habe selber in Java noch recht wenig gemacht. Daher wuerde mich interessieren:

1. Ist dieser Weg eigentlich der sinnvollste / Gibt's Verbesserungen / Wie macht man so eine Verbindungssache praktischerweise in Java?

2. In welche Gebiete sollte / muss ich mich einlesen, speziell wegen der Verbindung zum Internet und der Steuerung der PHP-Geschichte, evtl in welchem Forum wird mir weiter dazu geholfen?

3. Gibts dazu bestimmte Tutorials die mir da weiterhelfen, ich habe auf der java.sun.com Seite einen riesigen Haufen gesehn - welche brauche ich?

Danke schon mal ich hoffe mir kann geholfen werden und Danke jetzt schon mal.
 
S

stev.glasow

Gast
Verstehe das nicht ganz, welche Rolle soll PHP spielen?
 

Grizzly

Top Contributor
Also wenn ich das richtig verstanden habe, wollt ich mit einem Java-Client über PHP auf eine SQL Datenbank zugreifen. Das ist sicher sinnvoll, vor allem dann, wenn es sich um eine normale Internet-Präsenz handelt sprich bspw. Webspace+PHP+MySQL. Bei einem solchen Angebot kann man nämlich nicht direkt auf die Datenbank zugreifen.

Ich denke, dass man das so oder so ähnlich machen könnte:
Der Client übermittelt einen Benutzer und Passwort sowie eine SQL Abfrage an ein PHP Skript. Das PHP Skript authenifiziert den Benutzer. Ist die Authentifizierung positiv, wird die SQL Abfrage ausgeführt und das Ergebnis bspw. als XML Datei zurückgegeben.

Problem:
Ihr müsst Euch fast einen eigenen SQL Treiber sprich JDBC Treiber schreiben, der immer die Umwandlungen vornimmt. Und dann kommen ja noch solche Sachen wie BLOB Felder hinzu. Die müsste man bspw. Base64 encoden (wie die Anhänge von Mails) und auf der Client Seite wieder decoden. Anders herum gilt natürlich das gleiche.
 
W

Waduwablinki

Gast
Vielen Dank erstmal !!!!!!!!!!!!!!!!!!

Naja, ich habe schon mal einen Client auf eine postgreSQL Datenbank in Java erstellt, das ist aber erstens schon laenger her und lief auch nicht uebers Internet sondern direkt. Irgendwie war das damals eigentlich gar nicht so schwer, wie sich das hier nun anhoert, ich bin aber zu jeder Schandtat bereit... :autsch: Mein Problem hier ist eben, dass wir diese drei Levels haben (wollen):

DatenBank - die Internetseite (PHP) - den Client (Java)



Habe ich dann folglich richtig verstanden, dass man quaaaaasi...
...den Kontakt zum PHP-Applet uebers Internet, per Java irgendwie herstellt - Wie? (muss es denn mit "Benutzer" und "Passwort" sein oder kann man das auch ohne machen, der Service sollte "free" sein !!).

...das PHP-Applet (ich hoffe der Term ist richtig dafuer) ansteuert mit Java, indem man einfach nur die Query uebertraegt, muesste die schon encodet sein (Blob->base64 zB??).

...dann man sich einfach die Daten wieder zuruecksenden laesst. Wie geht das Empfangen da? - Evtl gibts da auch Schlagwoerter :) - das muss dann wohl codiert sein?

...weshalb man dann beim Java-Client das wieder dekodieren muss.



Bei den Daten handelt es sich wirklich einfach nur um Text, aber wo laege zB der Vorteil von XML, bzw wann nimmt man XML her?
Meintest Du mit JDBC-Treiber also das Modul im Programm, welches die SQL-Queries erstellt, abschickt und die Daten aus der Datenbank dann wieder entgegennimmt?
Was (Schlagwoerter fuer Tuts) brauch ich unter Java, um mit BLOB-Fields (Bsp Base64 Codierung) arbeiten zu koennen?
Muesste ich dann quasi die SQL-Queries auch schon encoden oder nur die Rueckgabe vom PHP-Applet?
Wenn ich das richtig verstanden hab, erfolgt ja dann bei Hin- oder Rueckweg jeweils immer zB encoden auf Java und
decoden auf PHP Seite (oder anders rum), ist das richtig - funktioniert das?

Fragen ueber Fragen... :bahnhof: :bahnhof: :bahnhof:
 

Jockel

Top Contributor
Grizzly hat gesagt.:
Das ist sicher sinnvoll, vor allem dann, wenn es sich um eine normale Internet-Präsenz handelt sprich bspw. Webspace+PHP+MySQL. Bei einem solchen Angebot kann man nämlich nicht direkt auf die Datenbank zugreifen.
Das ist aber vom Anbieter abhängig! Ich habe dieses Jahr auch eine kleine Applikation in Delphi entwickelt, die auf die MySql-Datenbank meiner Internetpräsenz zugegriffen hat.
@Waduwablinki: Ich würde erst einmal probieren, ob es dir erlaubt ist, direkt zur Datenbank zu connecten. Wenn das nämlich der Fall sein sollte, würde ich die PHP-Schicht weglassen (einen genauen Nutzen habe ich da jedenfalls noch nicht erkannt).
Und kleiner Tipp am Rande noch, falls du auf einem Windows-System entwickelst: bei den SQL-Statements auf Groß-/Kleinschreibung achten. Das hatte ich bei meiner Anwendung nämlich anfangs nicht getan und als ich dann auf die Datenbank meiner Internet-Präsenz zugreifen wollte (die komischerweise auf Linux läuft :- ), machte das Programm auf einmal nicht mehr das was es sollte. Den Fehler zu finden, hat etwas länger gedauert.
 
G

Guest

Gast
Nein, es ist nicht anders moeglich - dh der Weg ueber PHP muss eingehalten werden!

Ausserdem weiss ich dass es sich bei der Datenbank um PostgreSQL, also eine die auf Linux laeuft handelt (um genauer zu sein sogar auf Redhat 7.irgendwas).

Bleiben also meine Fragen von vorher offen...
:( ???:L
 

Grizzly

Top Contributor
Waduwablinki hat gesagt.:
[...]Bei den Daten handelt es sich wirklich einfach nur um Text, aber wo laege zB der Vorteil von XML, bzw wann nimmt man XML her?[...]

Wenn es bei der ganzen Sache sich nur um Text handelt ist die Frage, ob Du überhaupt SQL brauchst oder das nicht lieber irgendwie anders - also einfacher - lösen möchtest.

XML wäre in dem Fall mein Vorschlag gewesen, da man in XML die Daten schön strukturiert speichern und laden kann. Es würde aber prinzipiell auch eine CSV (Komma separierte Datei) oder sonst irgendetwas gehen.

Waduwablinki hat gesagt.:
[...]Meintest Du mit JDBC-Treiber also das Modul im Programm, welches die SQL-Queries erstellt, abschickt und die Daten aus der Datenbank dann wieder entgegennimmt?[...]

Du müsstest jede Menge Klassen für fast all' die Interfaces und Superklassen des Packages java.sql schreiben. Da stellt sich die Frage, ob Du das nicht einfacher lösen möchtest.
Wenn Du es so löst, ist es auf jeden Fall die aufwendigste Möglichkeit, aber auch, die man nachher am flexibelsten verwenden kann.

Waduwablinki hat gesagt.:
[...]Was (Schlagwoerter fuer Tuts) brauch ich unter Java, um mit BLOB-Fields (Bsp Base64 Codierung) arbeiten zu koennen?[...]

Ein Schlagwort? Da bin ich gerade etwas überfragt. Base 64 würde ich mal probieren. ;)

Waduwablinki hat gesagt.:
[...]Muesste ich dann quasi die SQL-Queries auch schon encoden oder nur die Rueckgabe vom PHP-Applet?
Wenn ich das richtig verstanden hab, erfolgt ja dann bei Hin- oder Rueckweg jeweils immer zB encoden auf Java und
decoden auf PHP Seite (oder anders rum), ist das richtig - funktioniert das?[...]

Du musst die Daten auf dem Hin- sowie auf dem Rückweg immer in irgendein Format bringen.



P.S.: Applets sind Java Programme, die im Browser laufen. ;)
 
W

Waduwablinki

Gast
Riesengrosses Dankeschoen, das hat mir zumindest mal etwas die Augen geoeffnet und mir einen groben Ueberblick gegeben was mich da so erwartet. :shock:

Eine Frage hab ich allerdings noch: wie is das mit dem Datenbanktreiber, brauch ich den denn in Java, wenn ich die Datenbank doch eigentlich nur per PHP bediene? Muss ich wirklich einen Datenbanktreiber schreiben fuer den Java Client?

Im Endeffekt muesste ich doch dem PHP einfach nur ne SQL Query uebertragen und daher mich mit dem Java nur um Datenuebertragung (Format, Base64, senden und empfangen) kuemmern. Aber die unmittelbare DBansteuerung uebernimmt doch die PHP-Applikation (ich hoffe Applikation trifft es eher, stimmt es wird ja quasi nicht wie ein Applet vom Browser ausgefuehrt und in Java isses ja auch nich ;) ) ???

Danke schon mal im Vorraus !
 

Grizzly

Top Contributor
Waduwablinki hat gesagt.:
[...]Eine Frage hab ich allerdings noch: wie is das mit dem Datenbanktreiber, brauch ich den denn in Java, wenn ich die Datenbank doch eigentlich nur per PHP bediene? Muss ich wirklich einen Datenbanktreiber schreiben fuer den Java Client?[...]

Wie schon gesagt: Es kommt drauf an, was für einen Aufwand Du betreiben möchtest. Man könnte auch einfach den SQL-Query (wenn man mal davon ausgeht, das man keine BLOB Felder benützt) per GET oder POST einem PHP-Skript beim Aufruf mitgeben. Die Antwort würde dann im Content der Antwort stehen. :)
 

Bleiglanz

Gesperrter Benutzer
wenn ich da auch mal meinen Senf dazugeben darf:

das ganze macht nur Sinn, wenn:

a) auf dem Webserver kein Java zur Verfügung steht (sondern nur PHP)

b) die Datenbank auf dem Webserver nur von localhost connected werden darf

c) praktisch nur Port 80 offen ist, also alles über HTTP abgewickelt werden muss (sonst könnte man ja einen ServiceWrapper schreiben, der die Anfragen an MySQL durchreicht)

offenbar ist das so, und Ihr wollt gerade Webservice neu erfinden :)

heisst natürlich nicht, dass SOAP hier eine Lösung wäre (Overkill)
 
W

Waduwablinki

Gast
@Grizzly:
Danke noch mals, ich denke das ist eigentlich genau das was ich brauche, werde mich nun mal schlau machen, wie ich da mit GET und POST arbeiten kann :### und wie ich natuerlich eine URL anconnecte.
Afaik handelt es sich schon um BLOB-felder, k.A. wie sich das aber dann aeussert, ich versuche mal das mit dem MailAPI Tut von java.sun, als Anhang einer Mail oder sowas aehnlichem muesste doch die Groesse eigentlich kein Problem sein (ich hoffe es ist nicht allzugrosser Kaese was ich grade geschrieben hab, werde ich heute Abend, nach dem Tut sicherlich selber merken :?

@PbS
Ich glaube das trifft es ziemlich genau - bin immer offen fuer Tipps. Ich denke mein Problem erstmal wird sein, wie man die Anfragen und Antworten (= Daten) zwischen Java und PHP am besten regelt.

:)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Oracle Verbindungsaufbau klappt nicht Java Basics - Anfänger-Themen 7
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
I Element n aus Datenbank Query (JPA / Hibernate) Java Basics - Anfänger-Themen 3
I Passwort in Datenbank speichern um später wieder auszulesen Java Basics - Anfänger-Themen 5
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
E schneller von der Datenbank abfragen Java Basics - Anfänger-Themen 15
E Datenbank Spalte zusammenzählen Java Basics - Anfänger-Themen 2
R Datenbank Java Basics - Anfänger-Themen 1
I API Key´s in der Datenbank decrypt / encrypten? Java Basics - Anfänger-Themen 23
I Werte (u.a. Geldbeträge) in Datenbank speichern und Rundungen? Java Basics - Anfänger-Themen 8
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
M Datenbank oder Textdatei? Java Basics - Anfänger-Themen 4
S Datenbank Befehl nach Login Java Basics - Anfänger-Themen 5
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
M Von der Datenbank zum Textfield Java Basics - Anfänger-Themen 16
R Best Practice Logik in der Datenbank oder in Java? Java Basics - Anfänger-Themen 3
R Datenbank-Werte dynamisch ausgeben Java Basics - Anfänger-Themen 19
B Frage zu Datenbank Design - Rechnungen, Angebote... und deren Positionen Java Basics - Anfänger-Themen 4
B Datenbank: Entity mit vielen Referenzen? Ansatz so ok? Java Basics - Anfänger-Themen 8
T Datenbank | Welche am Sinnvollsten? Java Basics - Anfänger-Themen 5
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
M Datenbank in jTable Laden Java Basics - Anfänger-Themen 49
M Datenbank verbindung Java Basics - Anfänger-Themen 19
J Java Verbindung mit mysql Datenbank Java Basics - Anfänger-Themen 3
B Datenbank, aktuelle Ende als Zahl an Label übergeben Java Basics - Anfänger-Themen 7
T Collections Geeignete Collection/Liste/Datenbank Java Basics - Anfänger-Themen 17
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
R Input/Output Verbindung mit mySql-Datenbank Java Basics - Anfänger-Themen 9
D Compiler-Fehler Wert auf Datenbank übertragen und Sleep Thread Java Basics - Anfänger-Themen 3
N (Java) Regristrierung und Login System mit einer Datenbank Java Basics - Anfänger-Themen 5
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
J Mit JSF Formular in Datenbank schreiben Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Verschiede Aktionen der Datenbank getrennt durchführen Java Basics - Anfänger-Themen 4
DaCrazyJavaExpert Datenbank wird nicht erstellt Java Basics - Anfänger-Themen 31
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
Meeresgott OOP Gui, Logik und Datenbank richtig aufbauen Java Basics - Anfänger-Themen 43
B Schreiben von zu vielen Einträgen in einer Datenbank Java Basics - Anfänger-Themen 9
S Datenbank auf Knopfdruck abfragen Java Basics - Anfänger-Themen 8
M Java als Webanwendung mit Datenbank abfrage Java Basics - Anfänger-Themen 3
N Datenbank mit GUI verbinden - Wie? Java Basics - Anfänger-Themen 5
1 Datenbank in Java Java Basics - Anfänger-Themen 1
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
J Bücher Datenbank Java Basics - Anfänger-Themen 5
S Best Practice MVC und große Datenmengen aus einer mySQL - Datenbank Java Basics - Anfänger-Themen 24
J Datum und Uhrzeit in Datenbank falsch hinterlegt Java Basics - Anfänger-Themen 13
R Erstversuch Datenbank Java Basics - Anfänger-Themen 6
I Daten speichern ohne Datenbank Java Basics - Anfänger-Themen 20
A Erste Schritte Verbindung zu MySQL Datenbank herstellen Java Basics - Anfänger-Themen 7
T Sql Datenbank - variable übergeben? Java Basics - Anfänger-Themen 8
C Passwörter möglichst sicher in Datenbank speichern Java Basics - Anfänger-Themen 18
W Erste Schritte Exceltabelle in Datenbank übertragen mittels XDEV Java Basics - Anfänger-Themen 7
J GUI mit phpMyAdmin Datenbank verbinden Java Basics - Anfänger-Themen 0
K Erste Schritte Datenbank SQL erklärung Java Basics - Anfänger-Themen 15
B Lokale Datenbank Java Java Basics - Anfänger-Themen 2
B Klassen Doppelte werte Filtern XML, Datenbank und DOM Java Basics - Anfänger-Themen 3
Todesbote Int Array mit Hibernate in Datenbank speichern. Java Basics - Anfänger-Themen 2
U Datenbank in Java Java Basics - Anfänger-Themen 8
M Keine Datenbank verbindung Java Basics - Anfänger-Themen 14
N mit Werten aus einer mysql datenbank in java rechnen Java Basics - Anfänger-Themen 17
Q Datenbank nicht über separaten Server Java Basics - Anfänger-Themen 4
B Dateiname in Datenbank schreiben Java Basics - Anfänger-Themen 2
J fortlaufende Objekte durch Variable auswählen; Datenbank Java Basics - Anfänger-Themen 4
S ArrayList in mysql Datenbank speichern Java Basics - Anfänger-Themen 6
C Datenbank - Welche Java Basics - Anfänger-Themen 5
B Java Objektorientierte Datenbank - Assoziation Hilfe Java Basics - Anfänger-Themen 4
G Input/Output Serialisierung oder Datenbank Java Basics - Anfänger-Themen 6
J Erste Schritte Objekte in Datenbank speichern Java Basics - Anfänger-Themen 26
A Android Datenbank gaaanz einfaches Insert geht nicht - warum? Java Basics - Anfänger-Themen 4
L Erste Schritte Datenbank Zugangsdaten sicher? Java Basics - Anfänger-Themen 15
S Input/Output Primzahlen Datenbank Java Basics - Anfänger-Themen 11
B Mit Java-Programm Daten aus MySQL-Datenbank auslesen, lokal und nicht lokal. Java Basics - Anfänger-Themen 10
K Input/Output Datenbank Java Basics - Anfänger-Themen 27
M Datenbank in die Gui Java Basics - Anfänger-Themen 4
J JTable mit Daten aus Datenbank füllen Java Basics - Anfänger-Themen 3
F Erfassung von PCs in eine SQLite-Datenbank über JDBC Java Basics - Anfänger-Themen 9
T Datenbank Abfrage Exception Null Java Basics - Anfänger-Themen 2
M Brauche ich ein Datenbank oder nicht? Java Basics - Anfänger-Themen 6
D JDBC Datenbank fail?! Java Basics - Anfänger-Themen 20
A Problem beim einfügen in eine Datenbank Java Basics - Anfänger-Themen 2
F Classpath Datenbank ... nur wo? Java Basics - Anfänger-Themen 24
H Datenbank suche in kleine Schritte Java Basics - Anfänger-Themen 6
B Personalnummer aus Datenbank Java Basics - Anfänger-Themen 3
M Welche Datenbank? Java Basics - Anfänger-Themen 5
J RadioButtonInhalt in Datenbank übergeben Java Basics - Anfänger-Themen 3
R Datenbank bei Klassenverteilung führt zu NullPointerException Java Basics - Anfänger-Themen 7
J PW von Datenbank wie abspeichern? Java Basics - Anfänger-Themen 2
F Verbindung zu MySql Datenbank Java Basics - Anfänger-Themen 4
MU5T4NG JPasswordField als Hash in Datenbank abspeichern Java Basics - Anfänger-Themen 3
J Kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
J Eigene kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
F Collections Datenbankdaten in einer Map speichern, bearbeiten, sortieren und wieder in Datenbank schreiben Java Basics - Anfänger-Themen 20
T Zugangsdaten für Datenbank in Java-Programm speichern? Java Basics - Anfänger-Themen 5
S Schnittstelle für Datenbank bzw. Dateiformat Java Basics - Anfänger-Themen 2
C ComboBoxModel mit Daten der Datenbank verändern Java Basics - Anfänger-Themen 2
T Datenbank automatisch erzeugen beim ersten Start Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben