如题:
我现在是这么做的var
   blob:TBlobField;
begin
     ...
      blob:=FieldByName('ST_TGPIC') as TBlobField;
      im_TGPic.Picture.Graphic.SaveToFile('.\\~tmp.~tmp');
      blob.LoadFromFile('.\\~tmp.~tmp');
   ....
end;这么做是不是太笨了啊?请教各位大虾怎么可以不通过临时文件,而直接写入数据库?

解决方案 »

  1.   

    那就用Tfilestream和tmemorystream吧
      

  2.   

    var 
      ms:tmemorystream;
    begin 
       ms:=tmemorystream.Create;
       addquery.Edit;
       image1.Picture.Graphic.SaveToStream(ms);
       tblobfield(addquery.FieldByName('zp')).LoadFromStream(ms);
       addquery.Post;
     end;
      

  3.   

    就这样吧,行了呀如果是jpg的图片,那就用tjpegimagelist来把jpg图片先存储,然后就差不多一样了
      

  4.   

    to mbzdh(一天一个进步) :
    那读出来可以这样写吗?var 
      ms:tmemorystream;
    begin 
       ms:=tmemorystream.Create;
       tblobfield(addquery.FieldByName('zp')).SaveToStream(ms);
       image1.Picture.Graphic.LoadFromStream(ms); end;
      

  5.   

    是的,没错,也可以读到指定的文件,  .savetofile('你的文件名');