Entwickler-Ecke

Datenbanken - Firebird - ZUgriff mit ADO


WIng2005 - Fr 10.03.06 17:43
Titel: Firebird - ZUgriff mit ADO
Hallo,

Ich habe mit Firebird einen Server laufen. Wenn ich unter Delphi (habe mal die 2006 Arch. Trail geladen) Habe ADOConnection, ADOQuery und DBGrid auf meinem Formular platziert.
So...wenn ich nun den Connection-String festlege, muss ich einen Treiber wählen....WELCHEN?
Hatte mal mit dem ZEOS-Kram rumgemacht, kam aber nichtmal über die Installation heraus. Ständig Compilerfehler. Ergo, wenns denn funzt, würde ich die erstmal weglassen wollen.
Ist denn ADO generell empfehlenswert, wenn Firebird genutzt wird?



MFG
Steffen

P.S: Die Suchfunktion habe ich genutzt...aber nix gefunden.


MisterBum83 - Fr 10.03.06 17:59

Meines Wissens nach sind die ADO-Komponenten nur im Zusammenhang mit MS Access zu gebrauchen.
Eigentlich kannst du die Standard-Komponenten verwenden...


mikhal - Fr 10.03.06 19:45

Bin vor einiger Zeit über die Mercury Database Objects [http://www.mdolib.com/index.en.html] gesolpert und habe sie mal ausprobiert. Trotz Status Release Candidate hinterließen sie einen guten Eindruck.

Grüße
Mikhal


Delete - Fr 10.03.06 19:48

Du brauchst einen OLEDB-Provider um auf den Firebird mit ADO zugreifen zu können. Aber die verfügbaren Provider sidn mieß. Nimm leiber ein ordentliche Kompo-Sammlung.


Delete - Fr 10.03.06 20:47

wenn du über ODBC eine datenbank ansprechen willst, ist ADO eine möglichkeit. eine andere ist die BDE. beide nehmen sich nicht viel, ausser dass die BDE extra installiert werden muss und nicht mehr weiter entwickelt wird. wenn du auf ODBC verzichten kannst, ist ein nativer DB zugriff eigentlich immer zu empfehlen.


WIng2005 - Fr 10.03.06 23:29

Erstmal vielen Dank für die vielen Antworten.

Eigentlich bin ich noch auf der Suche nach Grundsätzlichem.
Ich will eine Anwendung schreiben, welche Daten in einer Datenbank ablegt auf welche max 5 Clients zugreifen solllen.
Da ich diese in einem Unternehmen testen will, muss sie auch komerziell kostenlost einsetzbar sein.
Aus diesem Grund bin ich bei Firebird gelandet. War schon ein Stück weit gekommen, bis ich hier gelesen
habe, dass Paradox (die hatte ich bis dahin genutzt) nich wirklich empfehlenswert sein soll.
Ich benötige mehrere Tabellen. Diese können bis mehrere 10T Einträge (Erstzteillisten) enthalten. Ein Datenverlust wäre dabei
nicht wirklich gut. Andere Tabellen enthalten Rechnungsdaten, welch unter keinen Umständen verloren gehen dürfen.

Gibt es denn eine andere Möglichkeit Firebird anzusprechen, als über ZEOS-Komponenten
(wie gesagt, ich bekomm sie einfach nicht compiliert)?
Oder gibt es eine besser ansprechbare Datenbank (freeware, komerziell einsetzbar) als Firebird?

MFG
Steffen


mikhal - Sa 11.03.06 08:17

Firebird ist schon eine gute Wahl, versuch dazu mal die bereits oben vorgeschlagenen Mercury Database Objects [http://www.mdolib.com/index.en.html] als Ersatz für die ZEOS. Es gibt seit dem 28.02.2006 einen Release Candidate 2, der sich in meiner BDS 2006 ohne weitere Anpassungen sofort compilieren und mit drei Komponentensätzen installieren ließen. Die Komponenten sind recht zahlreich und decken eigentlich alles ab, was dir so im Betrieb mit Firebird begegnet.

Grüße
Mikhal


alzaimar - Sa 11.03.06 10:42

Ach, geht der INTERSOLV-ODBC-Treiber nicht? Der dürfte doch bei Borland mit dabei sein. Habs noch nicht probiert, wäre ja schade, denn die BDE ist Müll, die würde ich nicht mehr empfehlen.


Delete - Sa 11.03.06 11:49

kleiner tipp: Suche bei Google FIREBIRD ODBC


WIng2005 - Sa 11.03.06 20:03

Hallo,

habe mal nach dem MDO RC2 gesucht:
http://sourceforge.net/forum/forum.php?forum_id=544842

Wers mal ausprobieren. ansonsten versuch ich mal mein Glück mit dem:

http://www.rrze.uni-erlangen.de/infrastruktur/datenbanken/firebird/firebird-zugriff/install_easysoft.shtml#content

Ich glaub ich hab noch nen langen Weg vor mir.

Für weiter Hilfen (und die bisher) bin ich sehr dankbar.

MFG
Steffen


WIng2005 - Sa 11.03.06 23:31

Habe es mal hinbekommen....aber:
Kann es sein, dass ich den Server selbst gar nicht brauche?
Ich connecte mich ja einfach auf die Datei, und nicht auf den Server..?...!

MFG
Steffen


mikhal - So 12.03.06 11:30

Natürlich benötigst du den Server! Du connectest dich immer über den Server mit der Datenbank, über die Angabe der Datenbank-Datei teilst du dem Server lediglich mit, welche Datenbank du verwenden möchtest. Der Server wird immer der einzige sein, der direkt auf die Datenbank-Dateien zugreifen wird, alle anderen (sei es ein Client-Tool oder eine Programm, das auf die Datenzugreifen will) müssen ihre Anfragen an den Server stellen, dieser verarbeitet sie und stellt anschließend dem anfragenden Programm die Ergebnisse zur Verfügung.

Die Mercury Database Objects stellen dir lediglich eine Schnittstelle zum Server zur Verfügung. Wenn du die ZEOS Komponenten anschaust, bieten sie die Möglichkeit via mitgelieferter DLL's direkt auf Datenbanken einiger Datenbanken zuzugreifen (MySQL, PostgreSQL), es handelt sich hier um in einer DLL zusammengefaßte "Embedded-Versionen" oder Client-Installationen; bei allen anderen Datenbanken wird grundsätzlich auf installierte Server und installierte Clients zurückgegriffen. Die Client-Installation entfällt, wenn du auf der Maschine den Server installiert hast (Einzelplatz- oder Entwickler-Installation).

Grüße
Mikhal


WIng2005 - So 12.03.06 21:42

Also ich habe mit Friebird eine Datenbank erstellt und mit Database Workbench (trial) darin Tabellen und einen Datensatz angelegt.
Wenn ich nun Firebird herunterfahre, die Datei umbenenne und den neuen Namen der MDODatabase zuweise, funzt es trotzdem. Mache ich dabei grundlegend was falsch?
Meine Komponenten sind die MDODatabase, ein MDOQuery eine Datasource und ein DBGrid. Wei er dann noch eine Transaktion zugewiesen haben wollte also auch ein MDOTransaction.

MFG
Steffen


mkinzler - So 12.03.06 21:48

Du hast höchswahrscheinlich den embedded-Client installiert, welcher winw Single-User Serverfunktionalität für lokale Datanbanken bereitstellt.


mikhal - So 12.03.06 22:00

Wenn ich den Datenbank-Dienst herunterfahre (fbserver.exe), erhalte ich eine Fehlermeldung: unavailable Database. Sobald ich den Dienst wieder starte, funktioniert alles wieder einwandfrei. Ich nehme an, daß du die Verbindung zu deiner Datenbank gelöst hast, deine Instanz (Datenbank-Datei) umbenannt hast und dann dein Programm erneut gestartet hast. Der Datenbank-Server (also das Programm oder der Dienst) wurden aber nicht gestoppt.

Deshalb bleibt meine Aussage aus meinem letzten Post: Du meldest dich bei deinem Firebird-Server an und teilst ihm über den Namen der Datendatei lediglich mit, welche Datenbank du verwenden möchtest.

Grüße
Mikhal


WIng2005 - So 12.03.06 22:21

Naja, nicht ganz: Wenn ich mit Firebird eine DB erstelle (Kunden.fdb), dann Firebird deinstalliere (restlos entferne), kann ich von Delphi aus auf meine DB zugreifen, indem ich einfach die MDODatabase auf die Datei verlinke (wofür ist dann der Server?). Wie kann ich mich auf den Server connecten, ohne die Datei selbst einzubinden?

MFG
Steffen


mkinzler - So 12.03.06 22:34

Welchen Client hast du installiert? Ich wiederhole meine Vermutung von oben. Ändere den Connectionstrimg von Bsp. c:\daten\test.fdb auf 127.0.0.1:c:\daten\test.fdb. damit zwingst du den (embedde Client) nicht den "eingebauten" server zu verwenden, sondern einen "externen" Server (hier auch lokal) zu verwenden.


WIng2005 - Mo 13.03.06 00:30

Jupp, geht auch so. Aber ist das nicht ein weinig Blödsinn? So muss jeder Client die Struktur des Servers kennen.
Ist es nicht irgendwie möglich, einfach nur eine DB Namens "Kunden" auf der IP anzusprechen, also ohne Pfad?

MFG
Steffen


Lemmy - Mo 13.03.06 12:21

Hi,

das nennt sich alias und kann ab Fb 1.5 eingerichtet werden (\Firebird\aliases.conf)

GRüße
Lemmy


WIng2005 - Di 14.03.06 00:12

Super Tip, vielen Dank. Werde mir das gleich mal anschauen.

MFG
Steffen


WIng2005 - Di 14.03.06 00:32

OK, Alias bestimmt. Trotzallem kann ich diesen nicht nutzen. MDODatabase KANN NUR durch die korrekte ANGABE der DATEI inkl.
PFAD eine DB finden. Der Alias ist also sinnlos (in diesem Fall). Kenn denn hier keiner die Mercury Database Objects und
kann mir sagen wo/wie man die Verbindung zum Server anlegen kann, ohne eine konkreten Pfad zu benennen?

MFG
Steffen


WIng2005 - Di 14.03.06 11:46

Nur mal so als Anmerkung:

Falls es User gibt, die auch Probleme beim Installieren der ZEOS-Komponenten haben, probiert mal die Zdbc.dbk im Editor zu öffen.
Dort ist an einer Stelle ein ";" zu viel (siehe Bild - über der Markierung). Einfach durch ein "," ersetzen.


MFG
Steffen


jojo-sp - Di 14.03.06 12:39
Titel: Fb -> IB
Es gibt auch die Möglichkeit, die mit Firebird erstellten Datenbanken einfach in .gdb (Interbase) Datenbanken umzubenennen. Der Zugriff unter Delphi erfolgt dann ganz einfach mit den vorhandenen Interbase Komponenten.


Amiga-Fan - Di 14.03.06 13:15

ich benutze Firebird 1.5.2 und benenne die Dateien mit .FDB, auch wenn ich IBX verwende. Das geht also auch.


Lemmy - Di 14.03.06 13:16
Titel: Re: Fb -> IB
user profile iconjojo-sp hat folgendes geschrieben:
Es gibt auch die Möglichkeit, die mit Firebird erstellten Datenbanken einfach in .gdb (Interbase) Datenbanken umzubenennen. Der Zugriff unter Delphi erfolgt dann ganz einfach mit den vorhandenen Interbase Komponenten.


das würde ich nicht unbedingt empfehlen. Die ODS (quasi das File-System der Datenbank) hat unter Firebird 1.5 geringfügige Änderungen, deshalb ist ein Umbenennen problematisch! Wenn dann nur per Bakup-Restore

Die IBX-Komponenten funktionieren auch mit Firebird bisher ohne Probleme (Verison 1.5), solange die korrekte gds32.dll aus der fbClient.dll erzeugt wurde.

Unter XP und einigen Server-BS von Microsoft ist es zudem empfehlenswert auf die Dateiendung *.gdb zu verzichten. Diese befindet sich in der Systemsicherung, d.h. vor einem Zugriff auf die Datei wird diese vom System erst mal gesichert. Bei großen Datenbanken dauert das Zeit und im schlimmsten Fall kann es zum Verlust der Daten kommen, wenn der DB-Server und das Betriebssystem gleichzeitig auf die Datei zugreifen.

Grüße
Lemmy


WIng2005 - Di 14.03.06 14:06

Ich habe jetzt die ZEOS-Komponenten zum laufen bekommen und auch mal das:

http://www.dsdt.info/tutorials/zeosfirebird/?page=1

durchgelesen.

Nun mal folgende Situation:

Aufgabe: Auslesen einer Tabelle aus vorhandener Datenbank. Bekannt sind die IP des Serves und die Namen der DB sowie der Tabelle.
Es fehlt also der Pfad zur Datei. Der Alias sei dem Namen der DB entsprechend. Wie greife ich nun drauf zu? Auch das Bsp. unter o.g. Link greift auf die Datei zu, nicht auf Localhost:Alias .

MFG
Steffen


WIng2005 - Di 14.03.06 17:29

OK, habs hinbekommen, mein Fehler. Meine Firewall wollte nicht so ganz mitspielen....

Peinlich!


MFG
Steffen