Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Komponente um auf verschiedene Datenbanken zuzugreifen (https://www.delphipraxis.net/23081-komponente-um-auf-verschiedene-datenbanken-zuzugreifen.html)

haglo 28. Mai 2004 14:05


Komponente um auf verschiedene Datenbanken zuzugreifen
 
Wir enwickeln eine Datenbankapplikation, in der der Anwender wählen kann, welche Datenbank er verwendet (Access, MSSQL, MySQL, Interbase, Firebird).
Der Zugriff auf die Datenbank erfolgt mit Standard-SQL, wobei nur einfache SQL-Befehle verwendet werden zB Select, Insert, ..., (keine Trigger, keine StoredProcedures, usw).
Gibt es eine Komponente, mit der ich nur die Connection zur Datenbank ändern muss und dann über dieselbe Query (oder ähnliches) auf die entsprechende Datenbanken zugreifen kann,um meine enfachen SQL-Befehle abzusetzen.

HaJo 28. Mai 2004 14:10

Re: Komponente um auf verschiedene Datenbanken zuzugreifen
 
Hallo,

tja, gibt es.

Nannte und nennt sich BDE. Aber die hat wohl ausgedient :cry:

Die neuen Datenzugriffs-Verfahren sind dann ADO oder dbExpress.

Gruß, Jochen

haglo 28. Mai 2004 15:26

Re: Komponente um auf verschiedene Datenbanken zuzugreifen
 
kann ich mit dbExpress auf alle genannten Datenbanken zugreifen (Access, MSSQL, MySQL, Interbase, Firebird)

HaJo 28. Mai 2004 15:34

Re: Komponente um auf verschiedene Datenbanken zuzugreifen
 
Ja, das ist möglich.
Kannst Du Dir aber auch einfach ansehen wenn Du eine SQLConnection-Komponente auf irgendeine Form setzt und mit der rechten Maustaste in die Verbindungdseigenschaften guckst.

JohannesK 28. Mai 2004 16:05

Re: Komponente um auf verschiedene Datenbanken zuzugreifen
 
Eine einfache Möglichkeit ist es, mit ADO-Komponenten zu arbeiten und jeweils eine ODBC-Schnittstelle für die einzelnen Datenbanken zu verwenden.
Innerhalb des Programm kann der Zugriff dann einheitlich erfolgen, nur die ODBC ändert.

haglo 29. Mai 2004 08:19

Re: Komponente um auf verschiedene Datenbanken zuzugreifen
 
Danke für den Tip.
Wie kann ich jedoch mit Ado auf einen ODBC-Schnittstelle zugreifen.
Das Problem ist, dass ich auf dem Zielsystem die Datenbank über SQL erst anlege (Create...).
Mit reinem Ado krieg ich es gut für Access und MSSQL hin (über OLEDB).
Bin um jeden Tip dankbar.

JohannesK 29. Mai 2004 11:37

Re: Komponente um auf verschiedene Datenbanken zuzugreifen
 
Vielleicht ein Beispiel für mySQL:

- die ODBC anlegen (muss der Benutzer ja eh machen)
- ein Verzeichnis mit dem Datenbanknamen erstellen (geht ja auch über normale Windows - Befehle während der Installation bzw. aus dem Programm heraus)
- das Verzeichnis wird von mySQL dann als Datenbank interpretiert und kann bearbeitet werden
- die entsprechenden Befehle über ein adocommad.execute an die Datenbank absetzen.

Code:
adocommand1.CommandText := memo1.Text;
// z.B. memo1.text := 'CREATE TABLE DEMO (ID INTEGER)';
adocommand1.execute;
Statt memotext geht natürlich auch die Verarbeitung mit allen Befehelen aus einer Datei.

Mit mySQL fuktioniert das zumindest.

HaJo 29. Mai 2004 12:08

Re: Komponente um auf verschiedene Datenbanken zuzugreifen
 
Hallo Haglo,

vielleicht solltest Du erst noch einmal genau prüfen, womit Du denn zu arbeiten gedenkst. Du sprachst eingangs von (Access, MSSQL, MySQL, Interbase, Firebird).

Schaut man sich die Datenbank-Entwicklung der vergangenen Jahre an, so kommt man zum Schluß, das MS mal wieder versucht, verlorenes Terrain wieder zu gewinnen. Man hat sich vor Jahren mit der Übernahme des MS-SQL-Servers 6.5 nicht gerade mit Ruhm bekleckert. Das ging dann so weit, das schließlich die Aussage von MS kam, den SQL-Server 6.5, wegen der vielen Fehler, sterben zu lassen!

Die Nachfolgerversionen 7.0 usw. hatten und haben es schwer, sich zu etablieren. Zumindest bei den Entwicklern, die um die Fehler wussten.

Deswegen sind viele Firmen auf andere Lösungen umgestiegen, z.B. Oracle, oder Interbase.

Unterscheiden muss man auch grundsätzlich zwischen den beiden unterschiedlichen Verfahren - Container-basierende oder Datei-basierende) SQL-Server und die richtige Art für die eigene Anwendung festlegen.

Ich behaupte jetzt mal das das Datei-basierende Verfahren das am besten anwendbare ist. Wer arbeitet den heute mit riesigen SQL-Container-Daten? Das sind doch dann schon Anwendungen die in größeren Firmen zum Einsatz kommen. Aber nicht mehr für eine kleine Arbeitsgruppe taugen :-)

Die andere Überlegung ist die Frage nach dem ODBC-Treiber.
Muß man den verwenden? Oder gibt es doch einen Direktzugriff?
Bei bestimmten Anforderungen ist der ODBC-Treiber sicher nur eine eingeschränkte Schnittstelle. Nicht alles was im direkten Zugriff geht, kann er bewältigen.

Nur ein Beispiel: Ich muß in einem Krankenhaus Mitarbeiter-Ausweise mit Lichtbild drucken. Die Bilder liegen in einer Interbase-Datenbank. Mit den Crystal-Reports und dem ODBC-Treiber ist es bis heute zu nicht möglich, die Fotos korrekt zu drucken. Über den direkten Zugriff aber schon.


So, ich glaub ich hab dir jetzt genug Lesestoff geliefert, Deine oben angeführte Wunschliste der verwendbaren SQL-Server etwas einzuschränken. :-D :-D

Das wäre eigentlich ein Thema für eine richtige Disskussion <lach>

mfg, Jochen


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz