در اینجا فرض بر این است که خواننده با رکوردها در دلفی آشنایی دارد. هدف از این نوشتار، بیان روشی برای ذخیره و بازیابی رکوردها در دیتابیس به شکل فیلد BLOB می باشد.
فرض کنید رکوردی به شکل زیر تعریف شده است:
TUser = packed record
Name : string[50];
CanAsk : boolean;
NumberOfQuestions : integer;
end;
برای درج رکوردی جدید در جدولی که دارای یک فیلد BLOB با نام "data" است، می توان از کد زیر استفاده کرد:
var
User : TUser;
blobF : TBlobField;
bs : TStream;
begin
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) ;
try
bs.Write(User,SizeOf(User)) ;
finally
bs.Free;
end;
end;
حال برای خواندن و بازیابی رکورد یا رکوردهای ذخیره شده از کد زیر می توان استفاده کرد:
var
User : TUser;
blobF : TBlobField;
bs : TStream;
begin
if myTable.FieldByName('data').IsBlob then
begin
blobF := DataSet.FieldByName('data') as TBlobField;
bs := myTable.CreateBlobStream(blobF, bmRead) ;
try
bs.Read(user,sizeof(TUser)) ;
finally
bs.Free;
end;
end;
edName.Text := User.Name;
edNOQ.Text := IntToStr(User.NumberOfQuestions) ;
chkCanAsk.Checked := User.CanAsk;
end;