Zitat von
woki:
Das wichtigste Ziel ist, die Anwendung nicht ein- für allemal an eine Datenbank zu ketten, sondern durch Einführung dieser Zwischenschicht einen einfachen Wechsel der Datenbank ermöglichen zu können.
Diesen Vorteil können aber Zwischenschichten wie
BDE und
ADO nicht 100%ig leisten. Dazu erfolgt auf dieser Zwisschenebene eine zu geringe Abstraktion des
SQL-Dialekts.
So ist z.B. nicht möglich die
SQL-Anweisung SELECT TOP 10 FROM MyTABLE ohne Anpassungen auf jede beliebige
DB umzusetzen.
Nicht umsonst ist M$ mit
ADO.NET einen anderen Weg gegangen und hat für jeden Zugriff auf eine andere Datenbank spezialisierte
DB-Zugriffskomponenten eingeführt und nur der
DB-Unabhängie Teil wird mittels allgemeinger Dataset-Komponenten gehandhabt.
Auch unter Delphi kann man mit Hilfe der TDataset-Basisklassen trotz Verwendung von nativer-Komponenten eine
DB-unabhänige Anwendung schreiben. Dazu muss man "nur" das Bridge-Pattern verwenden, um die eigenheiten der
DB's und der
SQL-Dialekte zu kapseln.