Farben in einer Datenbank speichern und auslesen


BLR

Erfahrenes Mitglied
Hallo :)

ich möchte Farben bsp. : rot, grün, blau in einer Tabelle einer MSSQL speichern und diese wieder auslesen.....
wie macht man sowas********
Am besten hätte ich das gerne dann in c# als RGB....
Soll ich sie als Datentyp "bigint" speichern********
und dann dieses "bigint" einfach selektieren****?
 

Cromon

Erfahrenes Mitglied
Hallo BLR

Warum so viele '?'?

Hier hast du einen schönen Einstieg in den Data-Teil von .NET inklusive Beispielen mit INSERT und SELECT und deren Verarbeitung:
http://www.codeproject.com/Articles/4416/Beginners-guide-to-accessing-SQL-Server-through-C

Für deine Farbfrage würde ich die Tabelle so aufbauen:
name - primary key, string
code - int

Oder alternativ primary auf name und code, wenn du mehrere Codes mit dem gleichen Namen haben willst bzw mehrere Namen für den gleichen Code. Das geht dann aber schon mehr ins Gebiet Datenbankmodellierung.

Viele Grüsse
Cromon
 

BLR

Erfahrenes Mitglied
Ich möchte eigentlich nur wissen, welchen Datentyp ich wählen soll, wenn ich Farben in einer Tabelle speichern möchte.
Gibt es spezille Datentypen für Farben bei MSSQL ****
Letztendlich möchte ich dann in C# einfach per RGB (oder was eben die Tabelle zurückgibt) ne Farbe erzeugen.
 

Cromon

Erfahrenes Mitglied
Hallo BLR

Nein, es braucht keinen speziellen Datentypen für Farben. Sowohl HSV als auch RGB lassen sich einfach als 32 Bit Integer in der Datenbank speichern und wieder auslesen.

Viele Grüsse
Cromon
 

BLR

Erfahrenes Mitglied
ok :)
danke für diesen Hinweis.
Das heisst, dass ich ein RGB Wert in einen INT umwandeln muss und wenn ich auslese, aus INT in ein RGB-Wert?
Mit welchen C# Befehlen geht das so?
 

ksk

Erfahrenes Mitglied
Du kannst dir den Farbwert als string varchar(6) in der DB speichern.
Code:
string color = myColor.Name


INSERT INTO BLABLA Set Farbe ='" + color + "'" WHERE ID BLABLA ...

Danach beim auslesen kannst den Wert nehmen und direkt zuweisen.
Bsp:
Code:
  DataTable dt = new DataTable();
// Abfrage erstellen
  SqlDataAdapter sqlDT = new SqlDataAdapter(query, con);
  try
  {
  // Verbindung öffnen
  con.Open();
  // DataTable mit den gefundenen Daten befüllen
  sqlDT.Fill(dt);
  }

ListBox.BackColor = Color.FromArgb(255, Color.FromName(dt.rows[0]["Farbe"].Tostring()));

Lg
ksk