TClientDataSet:TStream到VarBinary

时间:2014-04-29 14:19:49

标签: delphi delphi-xe3 datasnap dbexpress tclientdataset

我正在编写一个REST Data Snap服务器,并且必须将TStream保存到VarBinary(384)字段。我尝试在字段上创建CreateBlobStream,但在尝试此操作时会出现异常错误。

如何使用DBExpress保存到VarBinary字段?

with cdsInsertIssueActionTemplateDetail do
      begin
        Active := True;
        Insert();
        T11 := TMemoryStream.Create;
        DM.CopyStreamToMemoryStream(Template11, T11);
        BlobField := TBlobField(FieldByName('FingerTemplate'));
        BS := CreateBlobStream(BlobField, bmWrite); //Exception occurs here
        BS.CopyFrom(T11, T11.Size);
        T11.Free;
        BS.Free;
        Post();
        Active := False;
      end;

1 个答案:

答案 0 :(得分:0)

我终于设法通过将FingerTemplate作为TSQLQuery中的参数来实现它,如下所示:

INSERT INTO [dbo]。[tblIssueActionTemplateDetail]([ActionUID],[FingerTemplate],[FingerTemplateIndex],[FingerIndex],[IsDuress],[AddedOnDateTime],[LastModifiedDateTime])  VALUES(:ActionUID,:FingerTemplate,:FingertemplateIndex,:FingerIndex,0,:DateTime,:DateTime)

制作参数的ftBlob数据类型

                begin
                  T21 := TMemoryStream.Create;
                  Template21.Position;
                  DM.CopyStreamToMemoryStream(Template21, T21);
                  BlobField := TBlobField(FieldByName('FingerTemplate'));
                   Params.ParamByName('FingerTemplate').SetBlobData(Template21, Template21.Size);
                  T21.Free;
                end;