Dans Delphi, un type de données d'enregistrement est un type spécial de type de données défini par l'utilisateur. Un enregistrement est un conteneur pour un mélange de variables liées de divers types, appelées champs, collectées en un seul type.
Dans les applications de base de données, les données sont stockées dans des champs de différents types: entier, chaîne, bit (booléen), etc. Bien que la plupart des données puissent être représentées avec des types de données simples, il existe des situations où vous devez stocker des images, des documents riches ou des données personnalisées types dans une base de données. Dans ce cas, vous utiliserez le type de données BLOB (Binary Large Object) ("memo", "ntext", "image", etc. - le nom du type de données dépend de la base de données avec laquelle vous travaillez).
Voici comment boutique (et récupérer) une record (structure) valeur en champ blob dans une base de données.
TUser = record…
Supposons que vous ayez défini votre type d'enregistrement personnalisé comme:
TUser = dossier compressé
Nom: chaîne [50];
CanAsk: booléen;
NumberOfQuestions: entier;
fin;
"Record.SaveAsBlob"
Pour insérer une nouvelle ligne (enregistrement de base de données) dans une table de base de données avec un champ BLOB nommé "data", utilisez le code suivant:
var
Utilisateur: TUser;
blobF: TBlobField;
bs: TStream;
commencer
User.Name: = edName.Text;
User.NumberOfQuestions: = StrToInt (edNOQ.Text);
User.CanAsk: = chkCanAsk.Checked;
myTable.Insert;
blobF: = myTable.FieldByName ('data') as TBlobField;
bs: = myTable.CreateBlobStream (blobF, bmWrite);
essayer
bs.Write (utilisateur, SizeOf (utilisateur));
enfin
bs.Free;
fin;
fin;
Dans le code ci-dessus:
"Record.ReadFromBlob"
Une fois que vous avez sauvegardé les données d'enregistrement (TUser) dans un champ de type blob, voici comment "transformer" les données binaires en valeur TUser:
var
Utilisateur: TUser;
blobF: TBlobField;
bs: TStream;
commencer
si myTable.FieldByName ('data'). IsBlob alors
commencer
blobF: = DataSet.FieldByName ('data') as TBlobField;
bs: = myTable.CreateBlobStream (blobF, bmRead);
essayer
bs.Read (utilisateur, taille de (TUser));
enfin
bs.Free;
fin;
fin;
edName.Text: = User.Name;
edNOQ.Text: = IntToStr (User.NumberOfQuestions);
chkCanAsk.Checked: = User.CanAsk;
fin;
Remarque: le code ci-dessus doit aller à l'intérieur du gestionnaire d'événements "OnAfterScroll" de l'ensemble de données myTable.
C'est ça. Assurez-vous de télécharger l'exemple de code Record2Blob.