首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TMemoryStream封存到数据库

2013-01-01 
TMemoryStream保存到数据库初次接触到TMemoryStream,不知道能不能用它将一个复杂的类对象保存到数据库。保

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在保存到数据库啊?急急!
[解决办法]
只要你能写到stream中就可以写到数据库
是不是有数据,那得看你当初保存时是否正确了,仔细检查一下吧
[解决办法]
看你的对象有没有流化的功能啊
[解决办法]
TreeListML對象似乎沒有OLE化...

热点排行