AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Crossplattform Software Entwicklung MSSQL / MYSQL

Crossplattform Software Entwicklung MSSQL / MYSQL

Ein Thema von bernhard_LA · begonnen am 1. Aug 2020 · letzter Beitrag vom 3. Aug 2020
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
918 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 1. Aug 2020, 15:20
Datenbank: MSSQL • Version: 12 • Zugriff über: FIREDAC
wir haben dieses einfache SQL statement unter MSSQL in Verwendung

Delphi-Quellcode:
CREATE TABLE TableName (
  RecordIndex int IDENTITY PRIMARY KEY,
  .....
  ...
  )

leider versteht MYSQL nicht was IDENTITY PRIMARY KEY bedeutet, gibt es hier eine Lösung welche beide Datenbank Systeme verstehen ?
Den Datentyp image haben wir bei MSSQL bisher immer verwendet, vermutlich gibt es hier eine Lösung für beide DB Server im DB Typ : BLOB,

Ich würde am liebsten MSSQL auf der Windows seite mit ADO verwenden, auf der UNIX Seite dann Firedac mit MYSQL oder SQlite ..... -
bin bereit nur die Schnittmenge von auf jedem DB Server unterstützen SQL CMD#s dafür zu verwenden
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.370 Beiträge
 
Delphi 7 Professional
 
#2

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 1. Aug 2020, 15:33
Suchmaschine + Datentypen MSSQL MySQL liefert mir u. a. dashier: https://docs.microsoft.com/de-de/sql...l-server-ver15

Wie auf die Datenbanken zugegriffen wird, ob ADO oder FireDac oder ... sollte egal sein.

Dein "einiziges" Problem ist, die Unterschiede zwischen dem SQL-Standard zu kompensieren.

Ist so ähnlich wie der Unterschied zwischen einem Sprungbrett: Je höher desto platsch.

Was ist der Unterschied zwischen SQL: Je kompatibler desto unwahrscheinlich.
Ok: Ist vielleicht etwas übertrieben.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.656 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 1. Aug 2020, 16:33
Da wirdst wohl nur mit ORMs und Änhlichem einen gemeinsamen Konsens finden können.

Die Objekte sind überall gleich, aber wie dann die Verbindung zur DB passiert, das kann überall total unterschiedlich sein.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
7.899 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 1. Aug 2020, 17:13
Eigentlich sollte FireDAC das korrekt umsetzen, wenn du das CreateTable von TFDTable verwendest. Die Felder und Indizes müssen dann vorher in den FieldDefs und IndexDefs angelegt werden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
2.880 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 2. Aug 2020, 02:27
Das sind sicher nicht die einzigen Probleme, wenn Du MSSQL wie mySQL betreiben willst.

Die Anpassung der Datenmodellscripte wird vermutlich insgesamt auch nur ein Problembereich sein.

Warum willst Du mySQL einsetzen?
Gruß, Jo
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
685 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 2. Aug 2020, 15:44
IDENTITY ist unter MySQL AUTO_INCREMENT.
Normalerweise finde ich die Syntax von MSSQL ziemlich gut, aber was sie sich bei dem Namen IDENTITY gedacht haben...

bin bereit nur die Schnittmenge von auf jedem DB Server unterstützen SQL CMD#s dafür zu verwenden
Wie jobo schon sagte: Es gibt zahlreiche Unterschiede zwischen MSSQL und MySQL. In einigen Fällen kann man sich auf einen kleinsten gemeinsamen Nenner einigen (einige wenige Dateitypen wie int und varchar, Funktionen wie CURRENT_TIMESTAMP), aber spätestens bei der Nutzung der allermeisten Funktionen und bei komplexeren Tabellendesigns ist es dann vorbei und du musst unterschiedliche SQL-Template für die Datenbanksysteme mitliefern. Es scheitert halt schon an so etwas einfachem wie der Erstellung einzigartiger Zeilennummern wie im Beispiel.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
2.880 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 2. Aug 2020, 17:47
Die Art eine eindeutige ID für eine Spalte zu erzeugen, ist ja nicht das problematischste, hier kann man zur Initialisierung unterschiedliche Scripte nehmen und fertig.
Spannender ist dann bspw. der Zugriff auf die neueste ID, weil man sie in einem abhängigen Datensatz als FK nutzen muss.
Hier liegen glaub ich schon eher Welten zwischen mySQL und MS SQL. Außer in V8 hat mySQL diese Last Used Pfriemelei mal bereinigt.

Vielleicht können beide Sequenzen? Da ich keines der Systeme nutze, weiß ich es nicht. Sequencen wären jedenfalls ein Quasi Standard. (Keine Ahnung was ANSI SQL da gern hätte)

Aber noch mal meine Frage, warum mySQL oder welches Cross aus Cross Plattform soll es denn sein?
(Jeder nur ein Kreuz bitte!)
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
16.724 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 2. Aug 2020, 18:09
Wieso AutoInc-Felder.
Ich würde auf GUID setzen?
Keine Probleme mit Replikation und auch Füllen mit Testdaten für Regressionstest einfacher zu hanbhaben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.582 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 3. Aug 2020, 09:52
Evtl. in beiden systemen auf AUTO INCREMENT verzichten und in beiden System auf einen Trigger setzte...
Allerdings weiß ich nicht wie incompatibel PL-SQL ist...

Insgesammt ist SQL so beschissen incompatibel gehalten, dass du vermutlich auf eine Factory setzen musst die deine SQLS Statements für verschiedene SQL-Server compatibel erstellt.
TFDTable müsste intern auch so eine Factory benutzen.

Oder du machst es so, dass der SQL-Servertyp teil der einstellungen ist und du erzeigst im Code je nach einstellung SQL-Statements für den passenden Server...So mache ich das weitestgehend...

Nur an einer stelle nicht...in der Mobilen App...da setze ich auch auf den kleinsten gemeinsamen nenner von Firebird, MSSQL und MariaDB
Andreas
#PerfMatters
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
7.899 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 3. Aug 2020, 10:10
TFDTable müsste intern auch so eine Factory benutzen.
In der Tat. FireDAC bringt für die verschiedenen DB-Server jeweils eigenen Implementierungen mit, die sich um solche Unterschiede kümmern. Setzt man das konsequent ein, beschränkt sich ein Wechsel von einem System zu einem anderen auf die Änderung der Connection-Parameter.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf