Ich sehe nicht viel Sinn drin, da es ja Sachen wie FireDAC oder UniDAC gibt, aber sei es drum...
Man kann auch für jede Art Verbindung eine Klasse bilden, welche die wichtigen Funktionen, die man so nutzt hinter einem gemeinsamen interface kapselt.
Code:
Type IdbConnection = interface
procedure Connect(AConnectionStr: String);
procedure CreateQuery: IdbQuery; // liefert ein interface zu einem
query passend zur connection
// mehr funktionen hier
end;
TUniDACConnection = class(TInterfaceObject, IdbConnection)
private
FDbObject: TUniConnection;
public
procedure Connect(AConnectionStr: String);
procedure CreateQuery: IdbQuery;
end;
TFireDACConnection= class(TInterfaceObject, IdbConnection)
private
FDbObject: TUniConnection;
public
procedure Connect(AConnectionStr: String);
procedure CreateQuery: IdbQuery;
end;
Muss man natürlich die einzelnen Funktionen, die man so braucht auch extra implementieren, aber naja, so auf die schnelle fällt mir da nichts anderes ein. Damit kannst wohl alles machen, was du brauchst.
Ich würde vielleicht noch eine ConnectionFactory dazubauen, denen gibst Du den Namen des Datenbank-Profils und der baut dir die connection zusammen mit den Parametern des Profils (DBName, Login, zusätzliche Connect-Params...)