AGB  ·  Datenschutz  ·  Impressum  







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

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
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 1. Aug 2020, 16: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
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 1. Aug 2020, 16: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
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 1. Aug 2020, 17: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 1. Aug 2020, 18: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
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 2. Aug 2020, 03: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)
1.051 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 2. Aug 2020, 16: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
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 2. Aug 2020, 18: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

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 2. Aug 2020, 19: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.929 Beiträge
 
Delphi 12 Athens
 
#9

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 3. Aug 2020, 10: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
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#10

AW: Crossplattform Software Entwicklung MSSQL / MYSQL

  Alt 3. Aug 2020, 11: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
Antwort Antwort


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 19:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz