AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi enums in Datanbank schreiben und wieder lesen
Thema durchsuchen
Ansicht
Themen-Optionen

enums in Datanbank schreiben und wieder lesen

Ein Thema von bernhard_LA · begonnen am 1. Feb 2024 · letzter Beitrag vom 1. Feb 2024
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

enums in Datanbank schreiben und wieder lesen

  Alt 1. Feb 2024, 17:26
Datenbank: MSSQL • Version: 12 • Zugriff über: ADO
Was ist eigentlich die beste Option enumerations wie TTrafficLight= (red,yellow,green, unknown, notinservice);
in einer MSSQL Datenbank Tabelle abzulegen?
Mir fällt nur ein als Integer oder String, gibt es hier eine elegantere Lösung ?
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: enums in Datanbank schreiben und wieder lesen

  Alt 1. Feb 2024, 17:28
Ich speichere zwar nicht in eine Datenbank, aber in eine lokale Datei, die Namen der Enums als String. Die lese ich auch so wieder aus.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: enums in Datanbank schreiben und wieder lesen

  Alt 1. Feb 2024, 17:37
Du willst das in guter, normalisierter Form, als separate Tabelle anlegen und mittels Fremdschlüssel auf diese Tabelle verweisen.

Mit den entsprechenden Constraints in deiner Datenbank kannst du somit sicherstellen, dass jeder Eintrag einen gültigen Enum-Wert hat und Änderungen am Enum auch entsprechend möglich sind indem nur die Tabelle erweitert wird statt ein Skript über den gesamten Datenbestand jagen zu müssen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: enums in Datanbank schreiben und wieder lesen

  Alt 1. Feb 2024, 18:18
* klein und schnell Feld.AsInteger := Ord(deineEnumvariable) als Integer oder SMALLINT in die DB
und zurück via TDeiEnumTyp(Feld.AsInteger)
Aber da darf man den Enum niemals "inhaltlich" verändern (maximal etwas hinten anhängen)

* Da MySQL auch ENUM kennt, ist natürlich der Weg, den Enum in Delphi als String zu haben, ganz praktisch.

* Alternativ eine "freie" Übersetzung von Delphi-Enum zu DB-Enum (oder DB-String) basteln/zusammenstellen.
Kennt ihr z.B. vom Boolean oder gewissen Enums im Objektinspektor.



Delphi-Referenz durchsuchenGetEnumName und Delphi-Referenz durchsuchenGetEnumValue (eventuell mit einem Copy, ums Prefix loszuwerden, falls man nicht mit ScopedEnums arbeiten will)

Delphi-Referenz durchsuchenIdentToInt und Delphi-Referenz durchsuchenIntToIdent
IdentToColor und ColorToIdent bzw. ColorToString
BoolToStr und StrToBool
$2B or not $2B

Geändert von himitsu ( 1. Feb 2024 um 18:20 Uhr)
  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 02:06 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