TMemoryStream保存到数据库

lw19860412 2010-08-27 04:00:08
初次接触到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在保存到数据库啊?急急!
...全文
191 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
m513734336 2012-06-13
  • 打赏
  • 举报
回复
怎么解决的?也不说明一下
nongly 2010-09-03
  • 打赏
  • 举报
回复
怎么解决的?
lw19860412 2010-09-01
  • 打赏
  • 举报
回复
解决了,谢谢诶
kye_jufei 2010-08-27
  • 打赏
  • 举报
回复
TreeListML對象似乎沒有OLE化...
luxuewei5214 2010-08-27
  • 打赏
  • 举报
回复
看你的对象有没有流化的功能啊
lw19860412 2010-08-27
  • 打赏
  • 举报
回复
楼上帮帮忙
MStream := TMemoryStream.Create();
SBFModel.SaveToDFMStream(MStream);
这两行没错吧,可是就是保存不进去,是不是不能保存这种类型的,
SBFModel是从TreeListML.Items[I].Data转化过来的,上面有:
SBFModel := TprystoSBF(TreeListML.Items[I].Data);
bdmh 2010-08-27
  • 打赏
  • 举报
回复
只要你能写到stream中就可以写到数据库
是不是有数据,那得看你当初保存时是否正确了,仔细检查一下吧

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧