Autor Beitrag
rstaeker
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 94

WIN 2000
D6 Prof
BeitragVerfasst: Mi 25.05.05 22:43 
Hallo,

ist es möglich mittels bedingter Compilierung verschiedene Datenbankenversionen (also z.B. MySQL, MSSQL Server, Firebird) in ein Projekt einzubinden?

Was möchte ich tun / Situation:
Ich habe ein Programm mit Datenbasis MS SQL Server. Jetzt möchte ich es auf andere Datenbanken (MySQL, etc.) ausweiten.

Alle DatenKomponenten (Connect, Querys) befinden sich in dann in verschiedenen "Datamodule".

Leider verlangt der Compiler immer nach dem direkten Namen des Datenmoduls um die Unterkomponenten anzusprechen. Muss ich jetzt alle Änderungen, Anfragen an Querys, etc. mit Compiler-Schaltern versehen oder geht das auch einfacher??

Vielen Dank im Voraus
Rene
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Do 26.05.05 19:30 
Äh?
Du meinst, Du hast also ein Datenmodul (TMsSqlDataModule) für MSSQL, eins für mySQL (TmySqlDataModule)... usw?

Versuche zunächst, mit den ADO-Komponenten zum Ziel zu kommen. Bis zu einem gewissen Niveau klappt das. Es klappt zu 99%, wenn man nur lesend auf die Daten zugreifen will. Beim Schreiben wirds dann kniffelig.

Definier Dir einen 'Wrapper', der alle Funktionen bereitstellt, die Du benötigst. In diesem Wrapper greifst du dann auf das entsprechende Datenmodul zu.

Du kannst Dir auch ein Datenmodul basteln, das alle Gemeinsamkeiten der DB-Module (also die TMsSql... TmySql...) implementiert. Davon leitest Du die DB-spezifischen Datenmodule ab.

Es ist leider so, das man bei Deinem Ansatz den kleinsten gemeinsamen Nenner aller DB finden muss. Das ist erstens nicht so leicht und zweitens leidet die Mächtigkeit der Anwendung. Willst Du sowas wie einen DB-Administrator bauen? Oder einen Reportgenerator? Ansonsten fällt mir kaum ein Anwendungsfall ein, wo man sowas benötigt. Ich lege mich bei meinen Anwendungen fest. Entweder nehme ich das, was der Kunde schon hat, oder ich sage ihm, er soll gefälligst MSSQL kaufen (oder die MSDE saugen). mySQL benutze ich nicht, weil es keine DB ist.