Autor Beitrag
ao
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: So 28.07.02 11:13 
Hallo,

viele kennen vielleicht das Problem: Man hat einen Server mit MySQL-Datenbank bei einem Provider, kann aber von aussen nicht auf die Datenbank zugreifen. Nun meine Frage an euch:

Kennt jemand eine "TQuery-ähnliche" Komponente mit der man auf eine solche MySQL-Datenbank zugreifen kann indem man einen kleinen Umweg über PHP macht? Genauer: Die Komponente sendet die SQL-Anweisung an ein PHP-Script, das Script (da es local auf dem Server ausgeführt wird, hat es auch Zugriff auf die Datenbank) liefert das Ergebnis an die Komponente zurück, mit der Ergebnismenge kann man nun programmintern weiterarbeiten.

Ich habe eine solche Komponente bereits entwickelt, aber warum das Rad zweimal erfinden, wenn es solche (bessere) Komponenten schon gibt. :wink:

Gruß
Andreas
hitstec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: So 28.07.02 12:44 
Ich kenn sowas nicht, aber es hoert sich interessant an. Frage: wie übergibts du Arrays vom PHP-Script nach Delphi?
ao Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: So 28.07.02 13:25 
Titel: Was meinst du für Arrays?
Hallo,

was meinst du für Arrays?

Gruß
Andreas
hitstec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: So 28.07.02 13:29 
Du sendest doch Anfragen an eine MySQL-Datenabnk. Als Rückgabe erhälst du im erfolgsfall ein Array zurück, also ein oder mehrere Datesätze. Meine Frage war, wie übergibst du den oder die Datensätze per PHP an Delphi weiter?

:?:
ao Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: So 28.07.02 21:03 
Hallo,

jetzt habe ich dich verstanden! :wink:

Also meine Komponente ist ganz einfach programmiert! Bei SQL-Anweisungen die keine Datenmenge zurückliefern (z.B. INSERT, UPDATE, etc.), gibt das PHP-Script nur Eine Erfolgs- bzw. Error-Meldung zurück.
Bei einer SELECT-Anweisung wird die Datenmenge bzw. eine Error-Meldung zurückgegeben. Die Datenmenge, die das PHP-Script ausgibt, ist eine einfache Text-Seite, wobei jede Zeile ein Datensatz ist, dessen Felder durch einen Separator-String getrennt sind. Zusätzlich werden in der ersten Zeile die Namen der Spalten ausgegeben. Dann läßt sich die Komponente ungefähr wie eine vom Typ TQuery handhaben. Also Next, IsEmpty, Eof, FieldByName, ParamByName usw.

Nachteil: Keine Blob- oder Enum-Felder oder ähnliche und natürlich keine Kompatibilität mit TDataSource

Deswegen bin ich auf der Suche nach einer besseren Komponente!
Ich hoffe irgendwer kann mir helfen!

Gruß
Andreas
samti
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 29.07.02 15:59 
Titel: Mit einem ODBC-Treiber müßte es gehen!!!
Hey es gibt die Möglichkeit auf MySQL mit einem ODBC Treiber zu zugreifen. Er steht zum Download unter www.mysql.com/downlo...api-myodbc-2.50.html
bereit. Dann könntest du mit den "normalen" Datenbank Kopmponenten zu greifen. Bei Installshield (Setup Programm für das Programm) wird ODBC auf unterstützt, daher kannst du daraus auch eine Anwendung machen.
Ich hoffe ich konnte Dir helfen!
Gruß
hitstec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Mo 29.07.02 16:26 
Ich glaube nicht, dass ihm das weiter helfen wird. Denn seinen Angaben nach ist die Datenbank auf dem Server seines Providers und deshalb, gottseidank, per Firewall von externen Zugriffen geshützt.

Sollte jedenfalss :)
ao Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Mo 29.07.02 16:57 
Hallo,

hitstec hat folgendes geschrieben:
Ich glaube nicht, dass ihm das weiter helfen wird.


So ist es leider! Es muss ein Umweg über PHP gemacht werden, wie ich es beschreiben habe.

Gruß
Andreas

PS: Bin ich denn der einzige der diese Idee hatte? :cry:
HaseKlopfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mo 29.07.02 20:56 
TMySQL
www.productivity.org/projects/tmysql/
hat mir in Sachen PHP + SQLOnline Datenbank ziemlich viel geholfen... bild mir ein, da gabs auch paar Settings bzgl. FireWall...

Querys, Updates, Inserts alles kein Problem...

lg,
johannes
ao Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Mo 29.07.02 21:35 
Hallo,

leider hilft mir die TmySQL-Komponente auch nicht weiter. Mein Problem ist es, das alle Anfragen an die mySQL-Datenbank bei meinem Provider von diesem abgeblockt werden, wenn Sie von einem System kommen, das eine andere IP-Adresse hat, als der Server, auf dem die Datenbank läuft.
Meines Erachtens muss ich also einen Umweg über PHP machen, weil nur die Scripte Zugriff haben, da sie auf dem Server selbst ausgeführt werden.

Gruß
Andreas
hitstec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Mo 29.07.02 22:25 
ich denke du findest auch keine passende Komponente, weil das nur mit einer Zwei-Wege-Lösung geht, nämlich über PHP und Delphi.
Am besten du programmierst an deiner Schnittstelle weiter und veröffentlichst sie irgendwann. :lol:
ao Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Di 30.07.02 20:12 
Tja, dann muss ich ja, Wohl oder Übel, meine Komponente weiter entwickeln. :(
Aber danke trotzdem!

Gruß
Andreas
kamil
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Fr 09.08.02 00:16 
Unter www.freesql.org gibt es kostenlose mysql Datenbanken, auf die man direkt zugreifen kann!

Kamil
t-ob-i
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 31



BeitragVerfasst: Fr 09.08.02 00:40 
kamil hat folgendes geschrieben:
Unter www.freesql.org gibt es kostenlose mysql Datenbanken, auf die man direkt zugreifen kann!


Diese sind aber auch erheblich langsamer und nicht so stabil als wenn ich dafür bezahle :D

Leider kenne ich auch keine passende Komponente. Doch möchte ich dich warnen in dem Php-Script keine Sicherheitsabfrage für die Anweisungen einzubauen. Ich könnte mir vorstellen das du nur auf manche Tabellen Zugriff gewähren willst und nicht auf alle. Wenn ich die URL der Scriptes habe könnte ich so leicht in deinen Tabellen herumschreiben.

Auch habe ich noch nie ernst mit dem Datenbankkomponenten in Delphi gearbeitet. Deswegen hab ich auch keinen Tipp mehr :D

Tobias
hitstec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Fr 09.08.02 01:03 
@Tobi: Bestimmt fragt er das Script vorher um Erlaubnis 8) , also ich meine damit, dass er an das Script ein Loginpasswort sendet, das ihm erlaubt Abfragen durchzuführen.

Ansonsten dürftest du Probleme haben, selbst wenn du die URL kennst, den Syntax bzw. die Arbeitsweise des Scripts herauszufinden.

Also ich finde seinen Ansatz gar nicht mal schlecht. Natürlich ist so ein Umweg sehr langsam und ineffizient. Ist aber scheinbar die einzige Lösung.
kamil
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Fr 09.08.02 01:15 
ich habe beide möglichkeiten eingesetzt und habe festgestellt, das der weg über php wesentlich langsamer ist!
es gibt bei php auch probleme, wenn die datenbank ausfällt oder ein anderer fehler auftaucht.
bei direktem zugriff bekommt man eine eindeutige fehlermeldung. das ist sehr vorteilhaft.
für die testphase kann man problemlos die freesql.org datenbank benutzen, für professionellen einsatz muss man sich eine datenbank kostepflichtigen datenbank suchen.

t-ob-i: freesql.org ist um einiges schneller, als der umweg über php

Kamil
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Fr 09.08.02 12:07 
Ganz einfach. Benutze die Komponenten von ZeosLib www.zeoslib.org. Mit diesen Komponenten kannst Du direkt in jede MySQL - Datenbank schreiben und lesen, egal wo der Server steht und wie Du Ihn erreichst.
ao Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Fr 09.08.02 15:32 
Hallo,

danke erstmal, das ihr euch mit meinem Problem befasst!

Also es gibt zwei Gründe, warum ich nicht eine Datenbank, wie freesql.org benutzen will:
    1.)
    Die Erreichbarkeit der Datenbank ist mir viel wichtiger als die Performance, und eben diese Erreichbarkeit ist bei kostenlosen Datenbanken nicht wirklich gegeben. Mein Provider garantiert mir 99,99% Erreichbarkeit des Server und der Datenbank im Jahresmittel. Ausserdem ist der Geschwindigkeitsverlust beim Umweg über PHP, vor Allem bei größeren Abfragen, nicht wirklich groß.
    2.)
    Ich will die Datenbank meines Providers benutzen, und der blockt alles, was von aussen kommt ab.
Zitat:
bei direktem zugriff bekommt man eine eindeutige fehlermeldung. das ist sehr vorteilhaft.


Solche Fehlermeldungen bekomme ich auch, da ich auch diese von PHP an die Komponente zurückgebe.

Gruß
Andreas

PS: Natürlich habe ich das PHP-Script auch gegen Missbrauch geschützt! :wink:
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Fr 09.08.02 19:10 
Du brauchst keinen Umweg über ein PHP-Skript machen. Mit den ZeosLib-Komponenten kannst Du direkt drauf zugreifen.
ao Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Fr 09.08.02 20:06 
Hallo bis11,

leider kann ich auch mit den Zeos-Komponenten nicht direkt auf meine MySQL-Datenbank zugreifen, am Besten du liest dir nochmal den ganzen Thread durch, dann verstehst du vielleicht auch warum! :wink:

Gruß
Andreas