Delphi中存储记录数据到BLOB Field

定义:

TUser = packed record

   Name : string[50];

   CanAsk : boolean;

   NumberOfQuestions : integer;

end; 

存储:

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; 

你可能感兴趣的:(Delphi)