Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankzugriff (https://www.delphipraxis.net/103197-datenbankzugriff.html)

hanspeter 12. Nov 2007 11:47

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

Bernhard Geyer 12. Nov 2007 12:15

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.

hanspeter 12. Nov 2007 12:36

Re: Datenbankzugriff
 
Zitat:

Zitat von Bernhard Geyer
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.

Die Zwischenschicht habe ich eigentlich schon realisiert aber auf Fibplus-Basis.
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

hoika 12. Nov 2007 14:12

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