AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken GUIDToString: welche Feldgrösse in der DB?
Thema durchsuchen
Ansicht
Themen-Optionen

GUIDToString: welche Feldgrösse in der DB?

Ein Thema von Delbor · begonnen am 3. Mär 2016 · letzter Beitrag vom 3. Mär 2016
Antwort Antwort
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: GUIDToString: welche Feldgrösse in der DB?

  Alt 3. Mär 2016, 12:14
Eine GUID ist eine 128 Bit (16 Byte) Zahl und wird auch meist als solche gespeichert (siehe System.TGuid).
Wie sie dargestellt wird (oft im 8-4-4-4-12 Hexadezimalformat) ist eine andere Geschichte.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: GUIDToString: welche Feldgrösse in der DB?

  Alt 3. Mär 2016, 13:05
Hi zusammen

Danke für eure ausführlichen Antworten!
Zitat:
Erstmal, ist die GUID 16 Byte groß, wenn du sie "binär" speichern würdest.
Zitat:
Eine GUID ist eine 128 Bit (16 Byte) Zahl und wird auch meist als solche gespeichert (siehe System.TGuid).

Demnach lege ich den Datentyp in der DB als 'VARBINARY(16)' fest. Soweit ich diese Seite trotz meines schlechten Englisch verstanden habe, kann dies ganz schön kompliziert sein (ausser bei Varbinary).

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: GUIDToString: welche Feldgrösse in der DB?

  Alt 3. Mär 2016, 15:26
Demnach lege ich den Datentyp in der DB als 'VARBINARY(16)' fest. Soweit ich diese Seite trotz meines schlechten Englisch verstanden habe, kann dies ganz schön kompliziert sein (ausser bei Varbinary).
FireDAC bekommt das sehr leicht gehandelt, siehe http://codeverge.com/embarcadero.del...d-edit/1089150
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: GUIDToString: welche Feldgrösse in der DB?

  Alt 3. Mär 2016, 15:38
Demnach lege ich den Datentyp in der DB als 'VARBINARY(16)' fest.
Besser BINARY mit fixer Länge, falls es diesen Typ äquivalent zu CHAR/VARCHAR geben sollte. Die Länge der GUID bleibt ja immer 16 und ändert sich nicht.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: GUIDToString: welche Feldgrösse in der DB?

  Alt 3. Mär 2016, 16:01
Der Zeichensatz/CharSet/Collation ist erstmal egal, das die GUID als String nur ASCII ist und das praktisch überall rein passt.

Bei BINARY(16) passt die GUID binär rein und bei BINARY(38) bzw. CHAR(38) als String.

Und vom Zeichensatz/CharSet/Collation des Feldes (Spalte) hängt ab, wie viel Speicher das Ding intern braucht.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
RSF

Registriert seit: 13. Mär 2008
155 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: GUIDToString: welche Feldgrösse in der DB?

  Alt 3. Mär 2016, 22:32
Ich benutze GUID in ID-Felder als CHAR(32)
Delphi-Quellcode:
function DB_GUID: String;
var
  NewGUID: TGUID;
  S: string;
begin
 CreateGUID(NewGUID);
 S:=GUIDToString(NewGUID);
 // Sonderzeichen entfernen ({,},-)
 while Pos('{', S) > 0 do
    Delete(S,Pos('{', S),1);
 while Pos('}', S) > 0 do
    Delete(S,Pos('}', S),1);
 while Pos('-', S) > 0 do
    Delete(S,Pos('-', S),1);
 Result:=S; // CAHR(32)
end;
Ronald
  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 08:39 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-2025 by Thomas Breitkreuz