Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [SQL] In wie weit sind SQL Datenbanken kompatibel? (https://www.delphipraxis.net/86866-%5Bsql%5D-wie-weit-sind-sql-datenbanken-kompatibel.html)

Bernhard Geyer 20. Feb 2007 22:49

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

Zitat von alzaimar
ich gebe Dir uneingeschränkt Recht, wenn es um wirklich performante Anwendungen geht. Für die hier angefragte Funktionalität (einfache Operationen,Open,Edit,Post) ...

Gibts noch mehr? :gruebel: Ah ja. Delete fehlt noch :-) Nicht zu ernst sehen - 1/2 Flasche Rotwein :???:

Zitat:

Zitat von alzaimar
Die Schwächen von ADO kann man hier vernachlässigen. Der Vorteit: ADO ist eigentlich auf jedem PC drauf.

Na ja. Eigentlich nur für den MS-SQL-Server. Access wird von MS eh schon in die 2te-Reihe gestellt und der Oracle-Provider ist soweit ich beurteilen kann ein Witz. Dann schon lieber Zeos (Setzt ja bei MS SQL-Server auch auf ADO auf). DBExpress könnte nachdem Codegear mit Delphi 2007 endlich DBExpress und BDP vereint hat (muß es nicht CDP heißen :gruebel:) auch ne gute alternative werden.

ice.icewing 21. Feb 2007 13:05

Re: [SQL] In wie weit sind SQL Datenbanken kompatibel?
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz