![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: Ibobjects
Datenbankzugriff
Hallo,
ich bin gerade dabei eine größere Anwendung von Paradox auf Firebird umzustellen. Als Zugriffskomponente hatte ich mich eigentlich für FIBPLUS entschieden. Jetzt hat aber der Auftraggeber den Wunsch geäußert auch andere Datenbanken handeln zu können. Speziell hier Mysql,PostgreSQL, MS-Server. Ich bin jetzt am Überlegen, wie ich der Anforderung gerecht werden kann. Ich überlege jetzt IbDac von Corelab zu verwenden. Wenn ich es richtig verstanden habe, sollte ein Austausch der Komponenten reichen, um eine andere Datenbank zu bedienen. Ich nehme mal an, das die Propertys der unterschiedlichen Varianten kompatibel sind? Der Auftraggeber arbeitet noch mit Delphi 7 und plant vorerst auch kein Update. Gibt es noch andere Varianten um durch Treiber- oder Komponententausch die Zieldatenbank variabel zu halten? Hat wer Erfahrung mit Anydac oder den Zugriffskomponenten von Remobjects? Für einen Tip dankbar. Gruß Peter |
Re: Datenbankzugriff
Zugriffskomponenten wie IBDac, ... kapseln nicht die SQL-Unterschiede. Dazu solltest du z.B. per Bridge-Pattern eine Zwischenschicht einbauen um DB-Eigenheiten schön in einer Unit/Klasse kapseln zu können.
|
Re: Datenbankzugriff
Zitat:
Ich suche jetzt eine Möglichkeit mit vertretbaren Aufwand die Datenbank austauschen zu können. Dabei geht es erst mal um das Aufzeigen der Möglichkeiten. Wenn ich dann die zusätzlichen Kosten der Entwicklung vorrechne, wird sich an dem Wunsch sicherlich noch etwas ändern. Ich selbst halte nicht viel von solchen Alroundlösungen, da man immer den kleinsten gemeinsamen Nenner suchen muss. Bisher hatte ich noch keinen Fall, dass ein Kunde eine andere Datenbank fordert und wenn, dann ist das sicherlich nicht billig. Gruß Peter |
Re: Datenbankzugriff
Hallo,
schon beim Umstieg auf FIBPlus hättest die den Aufwand machen sollen und bridge pattern benutzt. Bsp mit abgeleiteten Klassen
Delphi-Quellcode:
type
TBaseQuery=class function Open: Boolean; virtual; abstract; end; type TPdxQuery=class(TBaseQuery) FQuery: TQuery; function Open: Boolean; override; end; type TIBQuery=class(TBaseQuery) FQuery: TIBQuery;// oder was auch immer function Open: Boolean; override; end; function CreateQuery: TBaseQuery; begin {$IFDEF DB_IB} // oder wie auch immer Result:= TIBQuery.Create(NIL); {$ENDIF} {$IFDEF DB_Pdx} // oder wie auch immer Result:= TQuery.Create(NIL); {$ENDIF} end; Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz