În Delphi, un tip de date înregistrare este un tip special de tipuri de date definite de utilizator. O înregistrare este un container pentru un amestec de variabile asociate de diferite tipuri, denumite câmpuri, colectate într-un singur tip.
În aplicațiile de baze de date, datele sunt stocate în câmpuri de diferite tipuri: număr întreg, șir, bit (boolean), în timp ce majoritatea datelor pot fi reprezentate cu tipuri simple de date, există situații când trebuie să stocați imagini, documente bogate sau date personalizate tipuri într-o bază de date. Când se întâmplă acest lucru, veți utiliza tipul de date BLOB (Binary Large Object) („memo”, „ntext”, „imagine”, etc. - numele tipului de date depinde de baza de date cu care lucrați).
Iată cum se face magazin (și recupera) A record (structură) valoare în a câmp blob într-o bază de date.
TUser = înregistrare ...
Să presupunem că ați definit tipul dvs. de înregistrare personalizată ca:
TUser = înregistrare la pachet
Nume: șir [50];
CanAsk: boolean;
NumberOfQuestions: număr întreg;
Sfârșit;
"Record.SaveAsBlob"
Pentru a insera un nou rând (înregistrare a bazei de date) într-o tabelă a bazei de date cu un câmp BLOB denumit „date”, utilizați următorul cod:
var
Utilizator: TUser;
blobF: TBlobField;
bs: TStream;
începe
User.Name: = edName.Text;
User.NumberOfQuestions: = StrToInt (edNOQ.Text);
User.CanAsk: = chkCanAsk.Checked;
myTable.Insert;
blobF: = myTable.FieldByName ('date') ca TBlobField;
bs: = myTable.CreateBlobStream (blobF, bmWrite);
încerca
bs.Write (User, SizeOf (User));
in cele din urma
bs.Free;
Sfârșit;
Sfârșit;
În codul de mai sus:
"Record.ReadFromBlob"
După ce ați salvat datele înregistrării (TUser) într-un câmp tip blob, iată cum se „transformă” datele binare într-o valoare TUser:
var
Utilizator: TUser;
blobF: TBlobField;
bs: TStream;
începe
dacă myTable.FieldByName („date”) .IsBlob atunci
începe
blobF: = DataSet.FieldByName („date”) ca TBlobField;
bs: = myTable.CreateBlobStream (blobF, bmRead);
încerca
bs.Read (utilizator, sizeof (TUser));
in cele din urma
bs.Free;
Sfârșit;
Sfârșit;
edName.Text: = Numele utilizatorului;
edNOQ.Text: = IntToStr (User.NumberOfQuestions);
chkCanAsk.Checked: = User.CanAsk;
Sfârșit;
Notă: codul de mai sus ar trebui să intre în gestionarea de evenimente „OnAfterScroll” din setul de date myTable.
Asta e. Asigurați-vă că descărcați eșantionul de cod Record2Blob.