![]() |
Datenbank: MSSQL • Version: 12 • Zugriff über: ADO
enums in Datanbank schreiben und wieder lesen
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 ? |
AW: enums in Datanbank schreiben und wieder lesen
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.
|
AW: enums in Datanbank schreiben und wieder lesen
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. |
AW: enums in Datanbank schreiben und wieder lesen
* klein und schnell
Delphi-Quellcode:
als Integer oder SMALLINT in die DB
Feld.AsInteger := Ord(deineEnumvariable)
und zurück via
Delphi-Quellcode:
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. ![]() ![]() ![]() ![]() IdentToColor und ColorToIdent bzw. ColorToString BoolToStr und StrToBool |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr. |
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 by Thomas Breitkreuz