TMemoryStream保存到数据库
初次接触到TMemoryStream,不知道能不能用它将一个复杂的类对象保存到数据库。保存代码如下:
procedure TprystoSBF_MainForm.SaveDateToDB();
var
I: Integer;
SBFModel,sb: TprystoSBF;
MStream: TMemoryStream;
begin
for I := 0 to TreeListML.Count - 1 do
begin
SBFModel := TprystoSBF(TreeListML.Items[I].Data); //TreeListML是一个类似treeview的类对象,SBFModel属于
定义的一种比较复杂的类,包含好多内容和数据行
ADOTable3.Open;
ADOTable3.Append;
ADOTable3.FieldByName('ID').AsString := '001';
ADOTable3.FieldByName('XH').AsInteger := I+1;
MStream := TMemoryStream.Create();
SBFModel.SaveToDFMStream(MStream);
MStream.Position := 0;
TBlobField(ADOTable3.FieldByName('SHSJ')).LoadFromStream(MStream); //调试显示MStream=()
ADOTable3.Post;
MStream.Free();
end;
end;
等以后再取出来,怎么也是空的,没有数据,数据库读取的代码是:
for I := 0 to ADOTable3.RecordCount - 1 do
begin
MStream := TMemoryStream.Create();
TBlobField(ADOTable3.FieldByName('SHSJ')).SaveToStream(MStream);
MStream.Position := 0;
SBFModel := TprystoSBF.Create();
SBFModel.LoadFromDFMStream(MStream);
MStream.Free();
end;
不知道是保存有问题还是读取有错误,还是不能将TprystoSBF这种复杂的类保存到TMemoryStream在保存到数据库啊?急急!