Einzelnen Beitrag anzeigen

ice.icewing

Registriert seit: 10. Feb 2005
17 Beiträge
 
#12

Re: [SQL] In wie weit sind SQL Datenbanken kompatibel?

  Alt 21. Feb 2007, 14:05
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
  Mit Zitat antworten Zitat