Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Tabelle mittels ZEOS-Komponenten anlegen

  Alt 4. Dez 2009, 01:13
Schreib dir eine Klasse, die deine Felder in SQL übersetzt.
Hier das Grundkonzept:
Delphi-Quellcode:
TCreateTableBuilder = class(TObject)
private
   FSQL : TStringList;
public
   procedure AddStringField(const fname:string; len:integer; AllowNull:boolean);virtual;
   procedure AddBooleanField(const fname:string; AllowNull:boolean);virtual;
   ...
   property TableName:string;
   property SQL:TStrings read FSQL;
end;
Vor dieser Klasse gibt es dann jeweils eine Ableitung für die verschiedenen Datenbanken.
Du könntest auch die vorhandenen Klassen TFieldDef und TFieldDefs benützen und daraus die CREATE TABLE Anweisung generieren.

ADOX funktioniert nur für MS SQL Server und MS Access zufriedenstellend.

Und dann gibt es noch ein Grundsatzproblem:
Es gibt z.B. Kunden, die möchten unbedingt Oracle einsetzen; andere möchten IBM DB2 (eine ganz furchtbare Datenbank!).
Gibt man diesen Wünschen nach, dann ist das fast schon die Garantie für's Scheitern.
Hast du genug Manpower, um die Anwendung auf allen diesen Datenbanken zu testen?
Reicht der kleinste gemeinsame Nenner aller Datenbanken aus um darauf ein vernüftiges Programm aufzusetzen?
Hast du genug Hardware um für jeden Datenbankhersteller einen Server bereitzuhalten?
Ist dir klar, dass manche Feldnamen auf Datenbank A erlaubt sind, dagegen auf Datenbank B ein Schlüsselwort darstellen?
Bei mehr als drei Datenbanken, die unterstützt werden sollen wird's dann extrem unproduktiv.

Man muss auch zwischen der eigenen Datenbank für die Anwendung und Fremddatenbanken unterscheiden.
Aus einer fremden Datenbank über ODBC oder ADO ein paar Daten aus einer Tabelle zu importieren ist
relativ einfach.
Solange es einen funktionierenden ODBC/ADO-Treiber gibt.
Für die eigene Datenbank sollte man sich aber auf ganz wenige Hersteller beschränken.
fork me on Github
  Mit Zitat antworten Zitat