Die Systeme unterscheiden sich schon ganz ordentlich. Besonders aufgefallen ist mir das bei Feldern die mit Datum und Uhrzeit zu tun haben. Hier blos mal der Anweisungsausschnitt für insert in ein DateTimefeld.
Delphi-Quellcode:
case RG1.ItemIndex of
0 : TempString:=TempString+'To_Date('
+ QUOTE + FormatDateTime('YYYY-M-D h:nn:ss', Fields[J].AsDateTime)
+ QUOTE + ', ' + QUOTE + 'YYYY-MM-dd HH24:MI:SS' + QUOTE + ')';
1,2 : TempString:=TempString+QUOTE+AnsiDateTimeToStr(Fields[J].AsDateTime,True)+QUOTE;
3 : TempString:=TempString+QUOTE+FormatDateTime('D.M.YYYY h:nn:ss', Fields[J].AsDateTime)+QUOTE;
end;
(0=Oracle, 1=
MySQL, 2=InterBase, 3=
MSSQL)
Weitere Unteschiede sind die Datentypen. Das ist aber vor allem bei Createanweisungen interessant.
Der Umgang mit Autocommit ist verschieden. Bei
MSSQL standardmässig an und man macht "Begin Transaction" wenn man es mal nicht will. Bei
MySQL sagt man "Set Autocommit = 0"
Auch Autoincrement wird ganz verschieden gehandhabt. Bei Oracle mit Sequence und Trigger ,bei Interbase mit Generator und Trigger, bei
MySQL mit AUTO_INCREMENT und bei
MSSQL mit IDENTITY. Und verhalten tun sie sich auch noch unterschiedlich.
Da PlugIn und
DLL ja schon da also würde ich vom Einsatz eines (jedenfalls für mich) komplizierten Bridge Pattern absehen. Die
SQL-Anweisungen solltest du aber jeweils in deinem Plugin aus entsprechenden Übergabeparametern zusammenbauen.
Wenn du eine geniale Lösung findest lass es mich wissen.
icewing
J. Renner