For example, if the variable Buffer is of type PChar and contains binary data read from a file, the contents of Buffer are directly assigned to the BLOB parameter using the AsBlob property:
Query1.Params[0].AsBlob := Buffer;
Note: Applications seldom need to read AsBlob because Blob fields cant be used as output parameters.

解决方案 »

  1.   

    能不能不用query,改用如下呢?
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Stream1: TBlobStream;
      Stream2: TStream;
    begin
      Stream1 := TBlobStream.Create(Table1Notes, bmRead);
      try
        ClientDataSet1.Edit;
        { here抯 a different way to create a blob stream } 
        Stream2 := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('Res'), bmReadWrite);
        try
          Stream2.CopyFrom(Stream1, Stream1.Size);
          ClientDataSet1.Post;
        finally
          Stream2.Free;
        end;  finally
        Stream1.Free;
      end;
    end;
      

  2.   

    如果用query,因为tparam.asblob为指针型!没必要再用tblobstream
    ,tmemorystream,实际上他们也是一个内存区域,只是封装得更好而已
    我觉得用buffer就够了!
    如果要从tmemorystream之类获得buffer,
    调用TmemoryStream.writebuffer(Buffer,count);
    在把这个buffer传过去
      

  3.   

    我自己找到答案了:
      IBQuery1.ParamByName('BlobFieldName').LoadFromStream(MemoryStream,ftBlob);