我用delphi/mssql做三层程序,由于我不是用post或UpdateBatch更新到服务器mssql中,
而是传Delta到服务器,再在服务器端拆分组成update SQL更新数据,可是图片却无法更新.
请各位帮忙解决,在线等待...谢谢! 急急急.注: 用数据流方法我也用过,没成功.

解决方案 »

  1.   

    哦,这个做法很特例啊。
    TBlob字段能用Delta传输吗?
    建议先不要使用Delta更新的方法试试看,看能否得到图片。
    如果能的话,再在服务器端,TSteamMemory的SaveToFile方法验证,是否有图片。
      

  2.   

     iamduo 你好!
      你建议先不要使用Delta更新的方法试试看,看能否得到图片。
    我试了,可一看到,但在服务器端,如何保存图片到mssql中,请帮忙,谢谢。
      
      

  3.   

    你在客户端ApplyUpdates不就可以了?
      

  4.   

    Delta是好方法,我一直用。Blob也行的。
    至于图片为何不行,贴点代码出来大家看看。
      

  5.   

    acrodelphi 你好!
     
      你能否贴用Delta出处Blob图片的代码吗? 谢谢!!! 很急用!!!!
      

  6.   

    我用的都是POST或UPDATEBATCH,DELTA没有接触过,关注中.
      

  7.   

    使用QuickBurro中间件,对于Blob字段的处理两句语句即可:读Blob内容到本地文件:
        SyncBurro1.BlobToFile(nodeid,tablename,fieldname,filename,filterstr);
       SyncBurro1.ReadRemoteFile(nodeid,remoteFileName,LocalFileName,Threads);
    将本地文件写入到远程Blob字段中:
       SyncBurro1.WriteRemoteFile(NodeId,LocalFileName,RemoteFileName,Threads);
       SyncBurro1.FileToBlob(nodeid,filename,tablename,fieldname,filterstr);
    -----------------------------------------------
    快驴上路,永不止步
      

  8.   

    我想圖片不能直接用update SQL去更新吧!
    樓言既然已解決了,可以把你的方法跟大家分享一下。
      

  9.   

    blobField转成SQL时,是用这样的编码方式:
    其实大家可以用SQLServer Profile查看它如何更新blob资料的。function BlobDataToHex(AField:TBlobField):string;
    var
      MS:TMemoryStream;
      vB:Byte;
    begin
      Result:='0x';
      MS:=TMemoryStream.Create;
      try
        AField.SaveToStream(MS);
        MS.Position:=0;
        while MS.Position<MS.Size do
        begin
          MS.Read(vB,1);
          Result:=Result+InttoHex(vB,2);
        end;
      finally
        MS.Free;
      end;
    end;