Re: Debian/perl per ODBC mit FilemakerServerAdvanced/Mac verdrahten?
On 08.12.05 23:10:13, Joerg Rossdeutscher wrote:
> Am Donnerstag, den 08.12.2005, 18:48 +0100 schrieb Uwe Kerstan:
> Vielleicht kann mir mal jemand eine Grundsatzfrage beantworten:
>
> Mein Eindruck war, dass ODBC so eine Art "Zwischen-Layer" ist zwischen
> - einer allgemeinen, SQL-ähnlichen Abfragesprache
> - und den verschiedenen Datenbanken mit ihren "nativen" Sprachen
Nee, nicht wirklich. SQL ist ein Standard den eigentlich alle
"wichtigen" Relationalen DB implementieren - manche fast vollstaendig, manche
nur Teile (z.B. MySQL). SQL ist eine Abfragesprache (eigentlich _die_
Abfragesprache bei relationalen DB) mit der du Daten aus der Datenbank
bekommst.
ODBC dagegen ist M$'s Variante eines "Datenbankadapters", er soll die
unterschiedlichen Schnittstellen zur Konnektierung, Auswahl der
Datenbank und Ausfuehrung einer SQL-Abfrage "kapseln". Auf diese Weise
hast du immer diesselben Funktionen zur Verbindungsherstellung und
Anfrageausfuehrung, egal welches Datenbanksystem dann wirklich
angebunden ist. Bei Java nennt sich das ganze JDBC, fuer Python gibts
auch eine DB-Schnittstelle. Bei anderen Sprachen wie C/C++ oder PHP
gibts AFAIK keine ueberall vorhandene einheitliche DB-API. Hier musst du
dich dann jeweils mit den Schnittstellen der einzelnen Datenbanktreiber
auseinandersetzen.
> Wenn ich auf meinem Filemaker-Server einen ODBC-Treiber installiert
> habe, den Filemaker unterstützt, dann macht der doch eigentlich die
> "Übersetzung" von ODBC-SQL-Abfragen nach Filemaker?
Nee, eigentlich sollte der nur dafuer sorgen dass du mit Hilfe einer
ODBC-Verbindung SQL-Anfragen an den Filemaker-Server schicken kannst.
> Wenn dem so ist: Wieso muss ich dem Client(!) denn jetzt noch sagen,
> dass dahinter eine Filemaker/MySQL/Postgres/Whatever-Datenbank ist? Ich
> dachte, der Client fragt dann per "ODBC-SQL" den Server, und der
> übersetzt das nach Filemaker und liefert das Resultat zurück?
Ich kenne ODBC nicht im Detail, aber du musst beim eroeffnen der
Verbindung wahrscheinlich sagen, welchen Treiber ODBC benutzen soll um
die Verbindung herzustellen und wo der Server lauscht. So jedenfalls
laeufts bei Java.
> Das scheint aber ja nicht so zu sein. Anscheinend muss man dem Client ja
> sagen: Du redest per ODBC mit einer Filemaker-Datenbank. Wieso denn dann
> überhaupt ODBC? Wo ist der Gewinn?
Du musst halt nicht schauen ob die Funktion zur Verbindungseroeffnung
nun "fm_connect", "connect_fm", "open_db" oder sonstwie heisst und du
ebenso musst du die Parameter des Filemaker-Treibers nicht kennne.
Dasselbe gilt fuer das Ausfuehren einer Anfrage, ich kenne von keinem
Datenbanktreiber den Namen der Funktion um eine SQL-Anfrage
auszufuehren. Das ganze ist natuerlich nur dann wirklich wertvoll wenn
man das Datenbanksystem wechselt oder oft mit verschiedenen Datenbanken
arbeitet. Wenn du eh immer nur FileMaker nutzt kannst du dir natuerlich
auch dessen API einpraegen und nutzen.
Andreas
--
Today is the first day of the rest of your life.
Reply to: